Java identifind类类型中的枚举

问题描述 投票:0回答:1

我想用Java编写一个枚举,可用于通过数字识别Class类型。像这样的东西

public static enum ClassType{

1(Person.class)
2(Dog.class)
3(Cat.class)

}

然后写这样的东西

ClassType classType;
Class classOfMyObject = classType.get(1);

我不确定我该如何用代码编写。这只是一个例子。谢谢!

java class types enums identifier
1个回答
0
投票

首先,您不能仅使用数字来命名您的枚举,我认为您正在寻找这个:

enum ClassType {
    E1(Person.class),
    E2(Dog.class),
    E3(Cat.class);

    private Class value;

    ClassType(Class value) {
        this.value = value;
    }
}

此外,根据您的情况,您可以创建一个包含枚举和枚举索引的Map,例如:

enum ClassType {
    E1(Person.class),
    E2(Dog.class),
    E3(Cat.class);

    private Class value;

    static Map<Integer, ClassType> classes;

    static {
        classes = new HashMap<>();
        for (int i = 0; i < ClassType.values().length; i++) {
            classes.put(i, ClassType.values()[i]);
        }
        classes = Collections.unmodifiableMap(classes);
    }

    ClassType(Class value) {
        this.value = value;
    }

    public Class getValue() {
       return value;
    }
}

因此您可以致电:

Map<Integer, ClassType> classTypes = ClassType.classes;
ClassType ct = classTypes.get(0);
...
© www.soinside.com 2019 - 2024. All rights reserved.