Ты не можешь Я думаю, что у вас есть четыре варианта здесь. Все четыре предлагают решение, но с немного другим подходом ...
Вариант первый: использовать встроенное в name()
enum. Это прекрасно, если вам не нужен специальный формат имен.
String name = Modes.mode1.name(); // Returns the name of this enum constant, exactly as declared in its enum declaration.
Вариант второй: добавьте переопределенные свойства в свои перечисления, если вы хотите больше контроля
public enum Modes {
mode1 ("Fancy Mode 1"),
mode2 ("Fancy Mode 2"),
mode3 ("Fancy Mode 3");
private final String name;
private Modes(String s) {
name = s;
}
public boolean equalsName(String otherName) {
// (otherName == null) check is not needed because name.equals(null) returns false
return name.equals(otherName);
}
public String toString() {
return this.name;
}
}
Вариант третий: использовать статические финалы вместо перечислений:
public final class Modes {
public static final String MODE_1 = "Fancy Mode 1";
public static final String MODE_2 = "Fancy Mode 2";
public static final String MODE_3 = "Fancy Mode 3";
private Modes() { }
}
Вариант четвертый: интерфейсы имеют каждое поле public, static и final:
public interface Modes {
String MODE_1 = "Fancy Mode 1";
String MODE_2 = "Fancy Mode 2";
String MODE_3 = "Fancy Mode 3";
}
.name()
См .: stackoverflow.com/a/6667365/887836Каждое перечисление имеет метод name () и метод valueOf (String). Первый возвращает строковое имя перечисления, а второй дает значение перечисления, именем которого является строка. Это то, что вы ищете?
В самом Enum есть также статическое значениеOf (Class, String), так что вы также можете использовать
источник
some-really-long-string
.valueOf(String)
метод в сочетании сtoUpperCase(Locale)
для обеспечения преобразования строк.Вы можете переопределить
toString()
метод для каждого значения перечисления.Пример:
Применение:
источник
Как упоминает Бенни Нойгебауэр, вы можете перезаписать toString (). Однако вместо того, чтобы перезаписывать toString для каждого поля перечисления, мне нравится что-то вроде этого:
Вы также можете добавить статический метод для извлечения всех полей, их печати и т. Д. Просто вызовите getValue, чтобы получить строку, связанную с каждым элементом Enum.
источник
mode1.name()
илиString.valueOf(mode1)
. Боюсь, лучше не станетисточник
Вы можете сделать вызов, как показано ниже, где бы вы ни хотели получить значение в виде строки из перечисления.
Это вернет «Mode1» в виде строки.
источник
Вы можете использовать,
Mode.mode1.name()
однако вам часто не нужно это делать.источник
name()
и другоеtoString()
можно переопределить, но, надеюсь, это станет ясно из чтения кода,enum
если это происходит.name()
естьfinal
. Спасибо, что поправили меня. :)Насколько я знаю, единственный способ получить имя будет
Однако если вам это действительно нужно, вы можете сделать:
источник
Mode.mode1
все еще не типString
.Для моих перечислений мне не очень нравится думать о том, что им присваивается по 1 строке. Вот как я реализую метод toString () для перечислений.
источник
return
избыточно, потому что включение перечислений со всеми перечислениями завершается.Вы можете просто использовать:
источник
"" + Modes.mode1
. Я исправил ответ''.join()
мое решение для вашей проблемы!
источник
Enum - это немного особенный класс. Перечисления могут хранить дополнительные поля, реализовывать методы и т. Д. Например
Теперь вы можете сказать:
System.out.println(Modes.mode1.character())
и увидеть вывод:
a
источник
источник
Этот метод должен работать с любым
enum
:источник
Он напечатает:
Этот дизайн для перечисляемых строковых констант работает в большинстве случаев.
источник
после многих попыток я пришел с этим решением
источник
Вы можете попробовать это:
}
источник
я обнаружил, что это легче предотвратить ошибку типа:
однако - это может работать, когда вам нужно использовать String в log / println или всякий раз, когда java компилирует метод toString () автоматически, но в строке кода, подобной этой ->
вместо этого, как упомянуто выше, вам все равно придется расширять перечисление и использовать
.name()
в таких случаях, как это:источник