如何从接口获取枚举实现该接口的类?

时间:2015-04-23 01:08:53

标签: java interface enums

我正试图从这个界面获得一个枚举:

public interface PizzaInterface {
    public enum Toppings {
        pepperoni, sausage, mushrooms, onions, greenPeppers;
    }
}

到这个班级:

public class Pizza implements PizzaInterface{
    private String[] toppings = new String[5];
}

并能够将其存储在数组中。

(编辑): 如果改变了什么,我想把它放在一个ArrayList中。

3 个答案:

答案 0 :(得分:2)

您需要了解的第一件事是Enum将在该Interface中保持静态。并且在任何枚举上调用values()方法将返回枚举实例数组。因此,如果您可以使用Enum数组而不是String,那么您应该像上面提到的pbabcdefp一样使用values()调用。 :

PizzaInterface.Toppings[] toppings = PizzaInterface.Toppings.values();

但是如果你需要String内容,我建议你使用ArrayList。使用ArrayList然后到数组通常有更多的好处。在那种情况下,如果我是你,我会在Enum类中添加一个静态方法来返回字符串列表,我将在Pizza类中使用它。示例代码如下:

public interface PizzaInterface {
public enum Toppings {
    pepperoni, sausage, mushrooms, onions, greenPeppers;

   public static List<String> getList(){
       List<String> toppings=new ArrayList<String>();
       for (Toppings topping:Toppings.values() ){
           toppings.add(topping.name());
       }
       return toppings;
   }
}

}

public class Pizza implements PizzaInterface{
   private static List<String> toppings = PizzaInterface.Toppings.getList();
//use the toppings list as you want

}

答案 1 :(得分:1)

为什么要String[]Toppings[]会更好。您可以使用

执行此操作
PizzaInterface.Toppings[] toppings = PizzaInterface.Toppings.values();

答案 2 :(得分:1)

如果要将值存储为字符串,可以执行以下操作:

       private String[] toppings = names();

        public static String[] names() {
            Toppings[] toppings = PizzaInterface.Toppings.values();
            String[] names = new String[toppings.length];

            for (int i = 0; i < toppings.length; i++) {
                names[i] = toppings[i].name();
            }

            return names;
        }

否则只需从你的枚举中调用.values()方法,你就会得到一个Toppings数组

PizzaInterface..Toppings.values();