我需要使用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 ??? */
}}
示例:
假设在一个组合中我有Types
- PercentArea
,StackedArea
,ChartSubType3
等等,如果我选择PercentArea
,那么第二个组合可以获得子类型例如PERSENTAREA1
,PERSENTAREA2
等。
任何人都可以指导我如何检索给定类型的所有子类型值。
答案 0 :(得分: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);
}
}
}
希望这有帮助!
祝你好运!答案 1 :(得分:1)
您可以使用以下类型的子类型:
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);
}
}
答案 2 :(得分:-3)
您可以使用枚举上的values()
方法获取所有Subtypes
,然后随意保留或丢弃。
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html