Java泛型捕获

Java泛型捕获,java,Java,我有一些这样的代码。 负载是Java对象 DSRecommensions和LSRecommensions扩展了RecEntry objectMapper和TypeReference来自jackson,RecEntry是我自己的类 有效载荷只是一个重新进入的列表 public enum RecSourceEnum{ CSELL(DSL.class), LS(lsc.class); 私人期末班我不确定这是否真的是你想要的,但我还是决定发布我的答案 主类 public static void main

我有一些这样的代码。 负载是Java对象

DSRecommensions和LSRecommensions扩展了RecEntry

objectMapper和TypeReference来自jackson,RecEntry是我自己的类

有效载荷只是一个重新进入的列表

public enum RecSourceEnum{
CSELL(DSL.class),
LS(lsc.class);

私人期末班我不确定这是否真的是你想要的,但我还是决定发布我的答案

主类

public static void main(String[] args) throws IOException {
    String source = "CSELL";
    Class<? extends Alphabet> clazz = RecSourceEnum.valueOf(source.toUpperCase()).getRecEntry();

    Alphabet abc = new Alphabet();

    Alphabet val = convertFromObj(abc, clazz);

    System.out.println(clazz);
    System.out.println("A: " + val.getClass());
}   

private static <T extends Alphabet> T convertFromObj(Object payload, Class<T> clazz) throws IOException {
    ObjectMapper om = new ObjectMapper();
    return om.convertValue(payload, clazz);
}
class Alphabet{
    public String name;
}

class A extends Alphabet{
}

class B extends Alphabet{
}
输出

class test.A
A: class test.A
你有一个
列表
,你想给它分配一个
列表
。X和Y之间存在继承的事实并不意味着
列表
列表
之间存在继承。
enum RecSourceEnum {
    CSELL(A.class),
    LS(B.class);

    private final Class<? extends Alphabet> recEntry;

    <T extends Alphabet> RecSourceEnum(Class<T> recEntry) {
        this.recEntry = recEntry;
    }

    public Class<? extends Alphabet> getRecEntry() {
        return recEntry;
    }
}
class Alphabet{
    public String name;
}

class A extends Alphabet{
}

class B extends Alphabet{
}
class test.A
A: class test.A