java - 如何调用需要 Class<T> 对象作为参数的方法?

标签 java generics casting

我有一个类,我需要构造函数来初始化变量数组。我在互联网上进行了研究,也研究了堆栈溢出,但现在我对如何调用该方法感到困惑。例如,我如何在示例中调用 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);
   }
}

最佳答案

试试这个:

class SomeClass<T> {

    private T[] array;

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

}

并实例化它:

SomeClass<Integer> example = new SomeClass<Integer>(Integer.class, 10);

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

关于java - 如何调用需要 Class<T> 对象作为参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8460981/

相关文章:

java - 在java程序中发送shell命令

Java 通用可序列化、可迭代堆栈

java - 一个类在另一个类中的实例

arrays - Swift 2D 数组通用扩展 - 访问第二维的问题

JavaScript : casting int to char trouble

java - 有理类 - 无法约简分数和除法

javax.validation.Validation 多重实例化与重用单个 Validator 实例

java - Spring RestController 自定义 View 解析器

c++ - 如何转换指针以调用派生类函数/方法? C++

c++ - C++ 标准在哪里描述了指向基元的指针的转换?