2016-04-01 28 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 
}