【问题标题】:How do I load into an array all the elements in one variable of an enum?如何将枚举的一个变量中的所有元素加载到数组中?
【发布时间】:2019-07-23 14:56:08
【问题描述】:

我正在尝试使用另一个类中的方法将一个枚举变量的元素放入一个数组中(我希望我的解释是正确的,请看代码)

我尝试过各种方法,for 循环,有无构造函数。

public enum coffeetypes {
    COFFEE1 ("AMERICANO", "LATTE", "CAPPUCCINO"),
    COFFEE2 ("ESPRESSO", "RISTRETTO", "AMERICANO"), ;   
}

我想得到结果

"AMERICANO", "LATTE", "CAPPUCCINO" 
or "ESPRESSO", "RISTRETTO", "AMERICANO"
not "AMERICANO" "ESPRESSO"

【问题讨论】:

  • 是的,我用构造函数尝试了它,但除了创建三个单独的函数,每个函数都返回一个元素之外,我不知道如何做任何事情。这也意味着每个元素需要相同数量的元素,否则会出现一些错误。感谢您的回复,看起来他们应该运作良好。

标签: java arrays enums


【解决方案1】:

您的枚举类型甚至无法编译,因为它缺少构造函数和私有字段。 添加时,很容易添加 getElements() 方法,以便您可以从枚举外部访问列表:

import java.util.Arrays;
public class Coffee {

    public enum CoffeeTypes {
        COFFEE1("AMERICANO", "LATTE", "CAPPUCCINO"), 
        COFFEE2("ESPRESSO", "RISTRETTO", "AMERICANO");
        String[] elements;
        private CoffeeTypes(String... elements)
        {
            this.elements=elements;
        }
        public String[] getElements()
        {
            return elements;
        }
    }

    public static void main(String[] args) {
        CoffeeTypes myinstance=CoffeeTypes.COFFEE1;
        System.out.println(Arrays.asList(myinstance.getElements()));
    }

}

Arrays.asList 仅用于以可读的方式打印数组。

【讨论】:

    【解决方案2】:

    如果每个属性都有一个字段。

    import java.util.Arrays;
    import java.util.List;
    
    class Coffee {
        public static void main(String[] args) {
            System.out.println(CoffeeTypes.COFFEE1.getAttributes());
        }
    
        public enum CoffeeTypes {
            COFFEE1 ("AMERICANO", "LATTE", "CAPPUCCINO"),
            COFFEE2 ("ESPRESSO", "RISTRETTO", "AMERICANO");
    
            private String n1;
            private String n2;
            private String n3;
    
            CoffeeTypes(String n1, String n2, String n3) {
                this.n1 = n1;
                this.n2 = n2;
                this.n3 = n3;
            }
    
            public List<String> getAttributes() {
                return Arrays.asList(n1, n2, n3);
            }
        }
    }
    

    输出

    [AMERICANO, LATTE, CAPPUCCINO]
    

    【讨论】:

    • @c0der 你是对的。我重命名了类,忘记重命名构造函数。
    猜你喜欢
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多