通过命令行访问枚举

这个问题在这里已经有了答案:

  • 通过字符串值查找Java枚举23个答案

  • 您需要将String arg从命令行转换为枚举值。

    Child c = Child.valueOf(args[0]);
    

    使用Enum.valueOf() 。 它需要一个枚举类和字符串作为参数,并试图通过该名称找到一个枚举。

    注意:如果未找到,则抛出IllegalArgumentException ...您必须明确地捕获它,因为这是一个未经检查的异常。

    另一种解决方案是在你的枚举类本身上使用.valueOf()MyEnum.valueOf("whatever") )。 与异常处理相同的警告适用。


    解决方案:

    public enum Child {
    
        David(23),
        Johnson(34),
        Brackley(19);
    
        private int age;
    
        private Child(int age) {
            this.age=age; 
        }
    
        int getAge(){
            return age;
        }
    
        public static Child getAgeFromName(String name) {
            for(Child child : Child.values()) {
                if(child.toString().equalsIgnoreCase(name)) {
                    return child;
                }
            }
            return null;
        }
    
        public static void main(String[] args) {
            if(args.length != 0) {
                Child child = Child.getAgeFromName(args[0]);
                if(child != null) {
                    System.out.println(args[0] + " age is " + child.getAge());
                }else {
                    System.out.println("No child exists with name " + args[0]);
                }
            } else {
                System.out.println("please provide a child name");
            }
    
    
        }
    }
    

    输入输出
    java儿童大卫:大卫年龄是23岁
    java儿童山姆:没有孩子与山姆名称存在
    java孩子:请提供一个孩子的名字

    希望这能解决你的问题

    链接地址: http://www.djcxy.com/p/38087.html

    上一篇: Access enums through command line

    下一篇: Java convert a string to list of enums