Как напечатать значение Enum, которое передается в качестве параметра в функции на Java?

#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 минут до этого