首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中访问枚举的类型和子类型?

如何在java中访问枚举的类型和子类型?
EN

Stack Overflow用户
提问于 2016-09-13 05:34:51
回答 3查看 969关注 0票数 3

我需要使用enum实现以下内容。

代码语言:javascript
复制
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 - PercentAreaStackedAreaChartSubType3等,如果选择PercentArea,那么第二个组合体就可以得到子类型,例如PERSENTAREA1PERSENTAREA2等。

有人能指导我如何检索给定类型的所有子类型的值吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-13 05:57:06

我想你需要这样的东西

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

}

希望这能帮上忙!

祝好运!

票数 2
EN

Stack Overflow用户

发布于 2016-09-13 07:21:47

您可以使用SubType cahce,如下所示:

代码语言:javascript
复制
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);
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-09-13 05:39:55

您可以使用枚举上的values()方法获取所有的Subtypes,然后按您的意愿保留或丢弃。

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39462810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档