如何用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);