G'day, errata... Мой план был таким, как показано ниже. Это обновление должно разъяснить и извиниться за поздний ночной вопрос. Ошибка компиляции была вызвана проблемой в другом месте файла.
Уточнение: простое перечисление Java, например:
public enum ServiceSource
{
NONE,
URL,
FILE;
}
Хотите проверить, isURL():
public boolean isURL(){
return (URL == this);
}
Это работает (и компилируется)... Нет никаких вопросов - Правильно ответил: dasblinkenlight и Elliott Frisch. Спасибо вам большое за ваше время.
смотрите также:
Так как это метод экземпляра, вам нужно проверить, что this
равно URL
, например:
public boolean isURL(){
return (URL == this);
}
Если вы хотите иметь методы, которые являются полиморфными, то есть демонстрируют различное поведение для разных экземпляров (значений) вашего класса enum
, я предпочитаю переопределить общий метод:
public enum ServiceSource {
NONE("no_value"),
URL("url"){
@Override
public boolean isURL() {
return true;
}
},
FILE("file");
private final String val;
private ServiceSource(String val) {
this.val = val;
}
public boolean isURL() {
return false;
}
}
Но для методов, которые проверяют, является ли это конкретным значением enum
добавление метода isXXX
для каждой константы кажется очень расточительным. На самом деле, сама причина использования enum
- это то, что вы можете написать
if(thing == ServiceSource.URL)
В другом месте вашего кода.
Если я понимаю ваш вопрос, правильный метод в вашем перечислении - использовать this
так,
public enum ServiceSource
{
NONE( "no_value" ),
URL( "url" ),
FILE( "file" );
ServiceSource(String v) {
text =v;
}
private String text;
public boolean isURL() {
return this == URL;
}
}
Вы можете сделать метод в своем Enum, чтобы проверить его значение следующим образом:
public boolean isURL(){
return (URL == this);
}
Но трудно понять значение этого подхода, поскольку каждый объект имеет встроенный метод equals(), который выполняет одно и то же.
if (serviceSource.equals(ServiceSource.URL)) { ... }
Это был бы более общий и очевидный способ проверить присвоенное значение переменной Enum (или любой переменной, если на то пошло). При первом подходе вам понадобится новый метод isX() для вашего Enum; каждый раз, когда вы добавляете константу Enum, вам, вероятно, понадобится новый метод для сопровождения.