如何用java编写T.class?
可能重复:如何用java编写T.class?,java,Java,可能重复: 模板的T 在 无法编译T.class,是否需要反射以及如何进行反射 public void ConvertObjectToXML(String path, T bobject) { //Convert XML to Object File file = new File(path); JAXBContext jaxbContext = JAXBContext.newInstance(T.class);
模板的T 在 无法编译T.class,是否需要反射以及如何进行反射
public void ConvertObjectToXML(String path, T bobject)
{
//Convert XML to Object
File file = new File(path);
JAXBContext jaxbContext = JAXBContext.newInstance(T.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
T customer2 = (T) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer2);
}
由于Java处理泛型类型的方式,此代码无法工作:
public class Factory<T>{
public T create(){
return T.class.newInstance();
}
}
公共类工厂{
公共文件不能创建(){
返回T.class.newInstance();
}
}
您需要将实际的泛型类型传递给构造函数(或任何其他方法):
公共类工厂
丙级;;
公共工厂(c类){
这个.c=c;
}
公共文件不能创建(){
返回c.newInstance();
}
}
经典的方法是从数组中推断泛型类型,因为数组不包含其类型:
public interface List<T>{
...
T[] toArray(T[] target);
..
}
公共接口列表{
...
T[]到阵列(T[]目标);
..
}
这是因为
工厂
的实际运行时类型仅仅是工厂
,因此运行时无法访问其泛型类型。由于Java处理泛型类型的方式,此代码无法工作:
public class Factory<T>{
public T create(){
return T.class.newInstance();
}
}
公共类工厂{
公共文件不能创建(){
返回T.class.newInstance();
}
}
您需要将实际的泛型类型传递给构造函数(或任何其他方法):
公共类工厂
丙级;;
公共工厂(c类){
这个.c=c;
}
公共文件不能创建(){
返回c.newInstance();
}
}
经典的方法是从数组中推断泛型类型,因为数组不包含其类型:
public interface List<T>{
...
T[] toArray(T[] target);
..
}
公共接口列表{
...
T[]到阵列(T[]目标);
..
}
这是因为
工厂
的实际运行时类型仅仅是工厂
,因此运行时无法访问其泛型类型。这是什么“T”引用?它看起来不像泛型(由于t.class引用)。你怎么知道的?T不是一个类,是吗?我猜T
在这里是一个泛型类型?在这种情况下,上述代码将无法编译,因为t.class
无效。这是由于类型擦除。如果您需要运行时的泛型类,请看这里:是的,它是泛型类型,模板的TJava泛型与C++中的模板不一样;不要称t为“模板的t”。这是什么“t”引用?它看起来不像泛型(由于t.class引用)。你怎么知道的?T不是一个类,是吗?我猜T
在这里是一个泛型类型?在这种情况下,上述代码将无法编译,因为t.class
无效。这是由于类型擦除。如果您需要运行时的泛型类,请看这里:是的,它是泛型类型,模板的TJava泛型与C++中的模板不一样;不要称它为“模板的t”。如何称呼它?我使用XMLObj XMLtool=新XMLObj(客户);未成功最后我使用xmlobjxmltool=newxmlobj(Customer.class);怎么称呼它?我使用XMLObj XMLtool=新XMLObj(客户);未成功最后我使用xmlobjxmltool=newxmlobj(Customer.class);