Java 如何调用需要类的方法<;T>;对象作为参数?

Java 如何调用需要类的方法<;T>;对象作为参数?,java,generics,casting,Java,Generics,Casting,我有一个类,需要构造函数初始化变量数组。我在互联网上进行了研究,也研究了堆栈溢出,但现在我一直在研究如何调用该方法。例如,在我的示例中,如何调用method1 public class SomeClass<T>{ public T[] array; //Constructor public SomeClass() { Method1(T, 5); //? error Method1(5); //? error

我有一个类,需要构造函数初始化变量数组。我在互联网上进行了研究,也研究了堆栈溢出,但现在我一直在研究如何调用该方法。例如,在我的示例中,如何调用method1

public class SomeClass<T>{

   public T[] array;

   //Constructor
   public SomeClass()
   {
        Method1(T, 5); //?  error
        Method1(5); //?   error
        Method1(new T().GetType(), 5); //? error
        // HOW CAN I CALL THAT METHOD?

        array = (T[])(new Object[5]); // this gives an error too
   }

   private void Method1(Class<T> type, int size)
   {
       array = (T[])Array.newInstance(type, size);
   }
}
公共类SomeClass{
公共T[]数组;
//建造师
公共类()
{
方法1(T,5);/?错误
方法1(5);/?错误
方法1(新的T().GetType(),5);/?错误
//我怎么能称之为那个方法?
array=(T[])(新对象[5]);//这也给出了一个错误
}
私有void方法1(类类型,整数大小)
{
array=(T[])array.newInstance(类型、大小);
}
}

您需要将表示
T
Class
对象传递到
SomeClass
构造函数中:

public SomeClass(Class<T> clazz)
{
   array = Method1(clazz, 5);
}
public类(类clazz)
{
数组=方法1(clazz,5);
}
这是必要的,因为,这意味着
T
在运行时没有意义(出于相同的原因,获取表示数组元素类型的
对象)。

尝试以下操作:

class SomeClass<T> {

    private T[] array;

    @SuppressWarnings("unchecked")
    public SomeClass(Class<T> klass, int size) {
        array = (T[]) Array.newInstance(klass, size);
    }

}
class-SomeClass{
私有T[]数组;
@抑制警告(“未选中”)
公共类(类klass,整数大小){
array=(T[])array.newInstance(klass,size);
}
}
并举例说明:

SomeClass<Integer> example = new SomeClass<Integer>(Integer.class, 10);
SomeClass示例=新的SomeClass(Integer.class,10);

请注意,实例化的数组是一个对象数组,在您显式分配它们之前,它的所有元素都将是
null

为什么
array
public
?请查看此项。这基本上是同一个问题: