#java #enums
#java #перечисления
Вопрос:
Мое требование заключается в том, что я хочу передать перечисление в качестве параметра в функции, а из функции хочу вывести значение Enum. Например, Enum, Категория.ОДИН должен напечатать 1. Аналогично для ДВУХ следует напечатать 2, а для ТРЕХ — 3.
Я присвоил значение Enum, например, 1, 2, 3.
enum Category {
ONE(1),
TWO (2),
THREE(3);
private final Integer num;
Category(Integer val) {
num = val;
}
}
public class EnumDemo1 {
public static void printEnumValue(Category category){
System.out.println(category.name()); // Want to print the value of ENUM. 1, 2, 3
}
public static void main(String[] args) throws Exception {
for(Category category: Category.values()){
printEnumValue(category);
}
}
}
Комментарии:
1. Создайте средство получения для
num
поля в enum или сделайте поле общедоступным2. Если вы просто хотите «1 2 3», вы могли бы обойтись с
https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html#ordinal()
Ответ №1:
Вы можете добавить метод, который возвращает num
, например:
enum Category {
ONE(1),
TWO (2),
THREE(3);
private final Integer num;
Category(Integer val) {
num = val;
}
public int getValue() {
return num;
}
}
А затем вызовите его из printEnumValue
, например:
public static void printEnumValue(Category category){
System.out.println(category.getValue()); // Want to print the value of ENUM. 1, 2, 3
}
Ответ №2:
Объявите средство получения для поля или сделайте его общедоступным:
enum Category {
ONE(1),
TWO (2),
THREE(3);
private final Integer num;
Category(Integer val) {
num = val;
}
public int getNum() {
return num;
}
}
public class EnumDemo1 {
public static void printEnumValue(Category category){
System.out.println(category.getNum()); // Want to print the value of ENUM. 1, 2, 3
}
public static void main(String[] args) throws Exception {
for(Category category: Category.values()){
printEnumValue(category);
}
}
}
Кроме того, в перечислениях есть ordinals
, которые возвращают целое число, описывающее порядок перечисляемого значения.
Ответ №3:
удалите final
модификатор для поля num и объявите метод getter
enum Category {
ONE(1),
TWO (2),
THREE(3);
//
private Integer num;
Category(Integer val) {
this.num = val;
}
public int getValue() {
return num;
}
}
public class EnumDemo1 {
public static void printEnumValue(Category category){
System.out.println(category.getValue()); // Want to print the value of ENUM. 1, 2, 3
}
public static void main(String[] args) throws Exception {
for(Category category: Category.values()){
printEnumValue(category);
}
}
}
смотрите https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html для получения дополнительной
Комментарии:
1. совет удалить
final
является необоснованным, и объявление getter уже указывалось за 20 минут до этого