2016-09-13 22 views
3

enumを使用して以下を実装する必要があります。Javaのenumの型とサブタイプにどのようにアクセスできますか?

import java.util.*; 

/** 
* 
* @author mukesh 
*/ 
public class MyTest { 
private List<SubTypes> subTypes = new ArrayList<SubTypes>(); 
    enum Types { 
     PercentArea, StackedArea, ChartSubType3; 
    } 

    enum SubTypes { 
     PERSENTAREA1(Types.PercentArea), 
     PERSENTAREA2(Types.PercentArea), 
     PERSENTAREA3(Types.PercentArea), 
     STACKAREA1(Types.StackedArea), 
     STACKAREA2(Types.StackedArea), 
     STACKAREA3(Types.StackedArea);   

     Types t; 
     private SubTypes(Types t) {    
       this.t = t; 
      } 
     } 

     public List<SubTypes> getSubTypes() { 
      return Collections.unmodifiableList(subTypes); 
     }  

    public static void main(String[] args) {    
     /* How can i get SubTypes based on base type ??? */ 
    }} 

例:

IはTypes有する1回のコンボで仮定 - PercentAreaStackedAreaChartSubType3など、私はPercentAreaを選択した場合、第2のコンボは、例えば、サブタイプを取得することができPERSENTAREA1PERSENTAREA2など

特定のタイプのすべてのサブタイプの値を取得する方法を教えてください。

+0

をあなたがすることによって、正確に何を意味する「どのように私は、基本型に基づいてサブタイプを得ることができますか?」 – kujeensiti

+0

@ user3161880 1つのコンボで、タイプが-PercentArea、StackedArea、ChartSubType3などと仮定します。私がPercentAreaを選択し、次に2番目のコンボがサブタイプを取得できるとします。 PERSENTAREA1、PERSENTAREA2など –

+1

サブタイプのプロパティとしてタイプを持つのではなく、タイプに直接サブタイプを追加しないでください: 'PercentArea(SubTypes.PRESENTAREA1、SubTypes.PRESENTAREA2)'など。 –

答えて

2

は、私はあなたがこのことができます。この

private static void getSubTypes(Types type) 
{ 
    SubTypes[] values = SubTypes.values(); 
    for(SubTypes value : values) 
    { 
     if(value.t == type){ 
      System.out.println("found subtype "+ value); 
     } 
    } 

} 

希望のようなものが必要だと思います!

幸運を祈る!

+0

ありがとうございます。 1Qはこれが単一の値を取得するか、複数の場合、単一の値しか返さないと思います。 –

+0

私はそれがおかげで助けになると思います。 –

+0

forループのために、このメソッドが見つかった答えを返すようにするには、すべての値を配列に格納して返します。 – Vihar

1

あなたが好きなサブタイプcahceを使用することができますが、以下:

private static final Map<Types, List<SubTypes>> typesMap = new ConcurrentHashMap<>(); 

public static void addSubType(Types type, SubTypes subTypes){ 
    List<SubTypes> subTypeList; 
    synchronized (type) 
    { 
     subTypeList = typesMap.get(type); 
     if (subTypeList == null){ 
      typesMap.put(type, subTypeList = new LinkedList<>()); 
     } 
    } 
    subTypeList.add(subTypes); 
} 

public static List<SubTypes> getSybTypeList(Types type){ 
    return typesMap.get(type); 
} 

enum Types { 
    PercentArea, StackedArea, ChartSubType3; 
} 

enum SubTypes { 

    PERSENTAREA1(Types.PercentArea), PERSENTAREA2(Types.PercentArea), PERSENTAREA3(Types.PercentArea), STACKAREA1(
      Types.StackedArea), STACKAREA2(Types.StackedArea), STACKAREA3(Types.StackedArea); 

    Types t; 

    private SubTypes(Types t) { 
     this.t = t; 
     addSubType(t, this); 
    } 
} 
関連する問題