我创建了一个泛型类,比如:class Object<T>{},现在我要在Object<T>类中new类型为T的对象,应该怎么做?
T ob = new T();不行啊

解决方案 »

  1.   

    为什么要new T呢?
    Object<T> obj = new Object<T>();
      

  2.   

    可以new一个T的父类或者接口的实例,要不就new一个Object吧
      

  3.   

    你可以看一下关于泛型的擦除与补偿。Java的泛型是不是支持用new T()的方式来创建对象的。你可以采用一楼的方法,也可以用getInstance()
      

  4.   

    Object<T> obj = new Object<T>();或者用getInstance()写个内部类都是可以的哇
      

  5.   

    怎么总是提到Object<T> obj = new Object<T>(),是我没理解还是大家理解错了,我重新写一下问题:
    现在要写一个对象池的类,目的是一次性声明并初始化很多对象,减少不停new对象的开销,现遇到一个问题,public class DataPool<T>{
    LinkedList<T> mObjectList = new LinkedList<T>();
            ...
    public void newObject(){
    ...
    for (int i = 0; i < maxModify; i++) {
    T object = new T();
    mObjectList.addFirst(object);
    }
                    ...
    }
            ...
    }现在关键是T object = new T()这句,java中并不能这样创建对象,该则呢解决呢,能不能稍微详细一点。。
      

  6.   


    public class Student{
    private String stuName;
    publice String getStuName(){
    return this.stuName;
    }
    }
      

  7.   

    <T>是一个占位符,不能通过new实例一个对象。可以使用多态性间接达到目的
    T obj = (T)(new Object()) ;
      

  8.   


    你声明一个具备变量的时候,类型必须指定,如 Object<User> o = new Ojbect<User>();
      

  9.   

    如这位兄弟说,那是一个占位符,不能new。
      

  10.   

    帮你改一下
    public class DataPool<T>{
        LinkedList<T> mObjectList = new LinkedList<T>();
            ...
        public void newObject(T target){
            ...
            for (int i = 0; i < maxModify; i++) {
                //T object = new T();
                mObjectList.addFirst(target);
            }
                    ...
        }
            ...
       //用到的时候这样
      DataPool<A> dp = new DatPool<A>();
      dp.newObject(new A());
    }