gpt4 book ai didi

java - 泛型与类

转载 作者:行者123 更新时间:2023-12-02 08:00:20 25 4
gpt4 key购买 nike

您好,我正在使用反射进行一些测试...到目前为止我已经得到了这个:

public class MyConveter implements Converter {
private Class<?> myClass;

public MyConveter(Class<?> myClass) {
this.myClass = myClass;
}

@Override
public boolean canConvert(Class clazz) {
return clazz.equals(myClass);
}

@Override
public void marshal(Object arg0, HierarchicalStreamWriter arg1, MarshallingContext arg2) {
// TODO Auto-generated method stub
}

@Override
public Object unmarshal(HierarchicalStreamReader arg0, UnmarshallingContext arg1) {
try {
Object obj = myClass.newInstance();
Field daoField = myClass.getDeclaredField("id");
daoField.setAccessible(true);
daoField.set(obj, Integer.valueOf(5));
Field daoField2 = myClass.getDeclaredField("value");
daoField2.setAccessible(true);
daoField2.set(obj, "proj name");
return obj;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}

}

但我不喜欢结果是否有办法将其更改为:

public class MyConveter<T> implements Converter;

从而删除构造函数?

最佳答案

你可以用你想要的类型参数来声明你的类;但是,您确实需要尝试转换的类的实例(因为它在 unmarshal 方法中使用)。编译类后,泛型中的所有类型信息都会被删除,因此运行时无法知道要为哪个类创建新实例。

关于java - 泛型与类<?>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8984619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com