#java #enums
#java #перечисления
Вопрос:
У меня есть перечисление в Java, и каждый из его элементов перечисления имеет ряд параметров. То, что я пытаюсь сделать, это представить один из этих параметров в виде массива строк, но, похоже, я не могу выполнить правильную инициализацию.
Вот что я пробовал:
private static enum DialogType {
ACCCAT("Acccat", new String[] {"acccatid"}, "acccatText", "dlg7Matchcode", "Zutrittsnkategorie", "Text"),
private String mDialogName;
private String[] mKeyField;
private String mTextField;
private String mSelectFields;
private String mKeyFieldHeader;
private String mTextFieldHeader;
private DialogType(String dialogName, String[] keyField, String textField, String selectFields, String keyFieldHeader, String textFieldHeader) {
mDialogName = dialogName;
mKeyField = keyField;
mTextField = textField;
mSelectFields = selectFields;
mKeyFieldHeader = keyFieldHeader;
mTextFieldHeader = textFieldHeader;
}
}
Однако я получаю массу синтаксических ошибок. Есть идеи?
Ответ №1:
Сделайте так, чтобы
public enum DialogType {
ACCCAT("Acccat", new String[] {"acccatid"}, "acccatText",
"dlg7Matchcode", "Zutrittsnkategorie", "Text");
И это должно сработать. Обратите внимание на ;
в конце ACCAT.
Также перечисление не может быть статичным.
Комментарии:
1. Ах, глупый я, проблема даже не была связана с моим массивом. И мое перечисление является внутренним для тестового класса JUnit, поэтому я не думаю, что static является проблемой. Хотя это может не иметь особого смысла.
Ответ №2:
Это должно сработать — точка с запятой в конце строки ACCCAT
private static enum DialogType {
ACCCAT("Acccat", new String[]{"acccatid"}, "acccatText", "dlg7Matchcode", "Zutrittsnkategorie", "Text");
private String mDialogName;
private String[] mKeyField;
private String mTextField;
private String mSelectFields;
private String mKeyFieldHeader;
private String mTextFieldHeader;
private DialogType(String dialogName, String[] keyField, String textField, String selectFields, String keyFieldHeader, String textFieldHeader) {
mDialogName = dialogName;
mKeyField = keyField;
mTextField = textField;
mSelectFields = selectFields;
mKeyFieldHeader = keyFieldHeader;
mTextFieldHeader = textFieldHeader;
}
}
Ответ №3:
ACCCAT("Acccat", new String[] {"acccatid"}, "acccatText", "dlg7Matchcode", "Zutrittsnkategorie", "Text");
Я думаю, вам просто нужна точка с запятой в конце объявления экземпляра.
Я предполагаю, что перечисление статично, потому что это внутреннее перечисление чего-либо?