返回枚举中指定的类型的对象

时间:2014-07-02 14:17:44

标签: java generics

我有一个枚举,我可以从中获取String或Class

public enum EditorialPageDataType {
    BASIC_MODEL_INFORMATION("basic", BasicModelInformation.class),
    GRADES("grades", Grades.class),
    EXTERIOR_COLOURS("extColours", ExteriorColours.class);

    private final String label;
    private final Class<?> typeClass;

    EditorialPageDataType(String label, Class<?> typeClass) {
        this.label = label;
        this.typeClass = typeClass;
    }

    public Class<?> getTypeClass() {
        return typeClass;
    }

    public String getLabel() {
        return label;
    }
}

我想创建如下内容:

public T extract(EditorialPageDataType editorialPageDataType) {
    return anotherClass.get(editorialPageDataType.getTypeClass());
}

我知道我可以做以下事情

public <T> T extract(EditorialPageDataType editorialPageDataType, Class<T> classType) {
    return anotherClass.get(classType);
}

whereClass是:

class anotherClass {
    public <T> T get(Class<T> classToReturn) {
        T objectOfTypeT = getObjectOfType(classToReturn);
        return objectOfTypeT;
    }
}

但我希望能够只传入一个参数,并且具有枚举指定的类型。

1 个答案:

答案 0 :(得分:0)

通过调用传递通用参数:

public T extract(EditorialPageDataType editorialPageDataType) {
    return anotherClass.<T>get(editorialPageDataType.getTypeClass());
}