将多个枚举值分配给一个类属性

时间:2016-04-01 06:33:53

标签: java enums

我有一个如下所示的java类:

public class Location 
{
    public String city;
    public String state;
    public String country;
    public enum type{Beach,Forest,Hills,Desert};
}

如上type成员是枚举类型,我想指定多个枚举值来输入类型属性,就像一个Location对象有多个类型属性一样{ {1}}以及Hills

那我该怎么办呢? 在哪里声明枚举以及如何将枚举值分配给一个对象。

是否可以在不使用数组的情况下为一个对象分配枚举值?

2 个答案:

答案 0 :(得分:2)

您需要Collection来存储可变数量的值。由于您不希望重复使用Set。对于枚举存在java.util.EnumSet,它具有存储多个值的紧凑而有效的方式:

public class Location 
{
    public enum Type {Beach,Forest,Hills,Desert};
    public String city;
    public String state;
    public String country;
    public EnumSet<Type> types = EnumSet.noneOf(Type.class); // start with empty set
}

答案 1 :(得分:-1)

您可以将它们存储在类变量中:

private final Terrain first = Terrain.BEACH;
private final Terrain second = Terrain.DESERT;

同样,如果更合适,您可以将它们存储在一个地形集合中:

private final Set<Terrain> terrains = new HashSet<>(Arrays.asList(Terrain.BEACH, Terrain.DESERT));

或使用EnumSet:

private final EnumSet<Terrain> terrains = EnumSet.of(Terrain.BEACH, Terrain.DESERT);

另一方面,在他们自己的文件中声明枚举更常规,我假设它将被称为Terrain。此外,常量(因此也是枚举值)通常用大写字母书写。