我的代码段。
public class GenericArray <T extends Comparable<T>>{
private T[] a;
private int nElems;
public GenericArray(int max) // constructor
{
a=(T[])java.lang.reflect.Array.newInstance(Integer.class, max);
//Hard coded for Integer.
}
}
GenericArray arr= new GenericArray<Integer>(100);
这是有效的,因为我实例化显式传递Integer.class。我如何将其作为通用的?
或者 有没有办法打印使用ParameterizedType传递给GenericArray的类型信息? (如果我可能得到这个,我会处理使用if语句)
答案 0 :(得分:2)
由于类型擦除,您需要在构造函数中将g++ -o main.o main.c `pkg-config --cflags --libs libavformat`
作为参数传递,例如
Class<T>
并在构造函数中传递该类,请在使用时不要使用raw type。也就是说,
public GenericArray(Class<T> cls, int max) // constructor
{
a = (T[]) java.lang.reflect.Array.newInstance(cls, max);
}
答案 1 :(得分:-1)
您可以通过传递类型:
来为您的类参数化GenericArray<String, Integer> myobj = new GenericArray<>(“John”,2);
或者
考虑给定代码,其中通用方法display()接受数组参数作为其参数。
class GenericArray <T extends Comparable<T>>
{
public<T> display(T[] val) {
for( T element : val)
{
System.out.printf(“Values are: %s “ , element);
}
}
// Declaring Array
GenericArray[] intValue = {1, 7, 9, 15};
GenericArray<Integer> listObj = new GenericArray<> ();
// Passing Array values
listObj.display(intValue);
类似地,您可以声明具有两个类型参数的类。