Есть ли способ передать переменную при инициализации перечисления вместо передачи фактического значения в Java? - PullRequest
1 голос
/ 24 июня 2019

Мне нужно передать переменную класса в enum при его инициализации. Но переменная класса не доступна при инициализации enum.Итак, как этого достичь?

Я попытался передать переменную другого класса, того же класса, где находится перечисление.И то, и другое не сработало.

public class ComponentConstants {

    public Constants constants = Constants.getInstance();
    enum FIELDS_RESOURCES {
        //instead of text i want to use constants.data_type.text. But I was not able to.

        SourcetType(true, "text", "Source Type", "source_type", 255, false); //No I18N
        private VOCFIELDS_RESOURCES(boolean isCustomField, String data_type, String field_label, String api_name, int length, boolean isVisible) {
            this.isCustomField = isCustomField;
            this.data_type = data_type;
            this.field_label = field_label;
            this.api_name = api_name;
            this.length = length;
            this.isVisible = isVisible;
        }
    }
}

Выше я хочу использовать значение из констант, поскольку, если есть какие-либо изменения, оно должно отражаться и в моем коде.Единственная точка констант, но я не смог ее использовать.Как этого достичь и почему нельзя использовать другие переменные?Спасибо!

1 Ответ

1 голос
/ 24 июня 2019
public class Main {

    public enum Enumeration {

        Test(Constants.a, Constants.b); // can refer to constant "a" & "b" static variables

        private final String a;
        private final String b;

        Enumeration(String a, String b) {
            this.a = a;
            this.b = b;
        }
    }

    public static class Constants {

        static String a = "a";
        static String b = "b";
    }
}

Если вы используете static поля в качестве констант, на них можно ссылаться в конструкторах перечисления.Подробнее здесь относительно перечислимых полей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...