2016-04-01 24 views
0

我有一java类象下面这样:Assing多个枚举值到一个类属性

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

type构件是枚举类型,我想分配多个枚举值键入性质研究像一个Location对象具有多个类型的属性,如Hills以及Forest

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

是否可以不使用数组分配枚举值一个对象?

回答

-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。此外,常量(因此也是枚举值)通常以大写字母书写。

+0

它不适合我不可行的,因为它的一些位置都有两个以上的类型,那么会发生什么? –

+0

如果有第三种或第四种类型,该怎么办? – Seelenvirtuose

+0

OP表示他不想要一个数组,我将其解释为不想收集任何类型的数据。这就是为什么我只把它作为一个评论。 –

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 
}