在Java中为用户定义的泛型数组构造对象
如果我使用此构造函数定义了自己的泛型数组:在Java中为用户定义的泛型数组构造对象,java,arrays,generics,Java,Arrays,Generics,如果我使用此构造函数定义了自己的泛型数组: public PublisherGenericArray(Class<E> c, int s) { // Use Array native method to create array // of a type only known at run time @SuppressWarnings("unchecked") final E[] a = (E[]) Array.newInstance(c,
public PublisherGenericArray(Class<E> c, int s)
{
// Use Array native method to create array
// of a type only known at run time
@SuppressWarnings("unchecked")
final E[] a = (E[]) Array.newInstance(c, s);
this.a = a;
}
PublicPublisherGenericarray(c类,int-s)
{
//使用数组本机方法创建数组
//仅在运行时已知的类型
@抑制警告(“未选中”)
最终的E[]a=(E[])数组;
这个a=a;
}
如何创建满足第一个参数(类c)的对象
基本上:
PublisherGenericArray <String> newArray = new <String> PublisherGenericArray(???,newSize);
PublisherGenericArray newArray=newpublishergenericarray(???,newSize);
标记为“?”的第一个参数将包含什么?PublisherGenericArray newArray=newpublishergenericarray(String.class,newSize);
构造的第一个参数是ParameterSid类型的类
参数化类型是泛型类型的调用。比如说
Foo
是泛型类型,而
Foo<Integer> t;
请注意,在ttt
中,我使用了菱形,它只适用于JavaSE7和更高版本
也可以通过对原始类型进行调用来创建参数化类型
A类{
}
PublisherGenericArray tttt=新PublisherGenericArray(
A.4级);
你的
在新公共中…
在这里毫无用处。很好的例子!非常感谢。
Foo<Integer> t;
PublisherGenericArray<Integer> t = new PublisherGenericArray<Integer>(Integer.class, 3);
PublisherGenericArray<String> tt = new PublisherGenericArray<String>(String.class, 3);
PublisherGenericArray<NullPointerException> ttt = new PublisherGenericArray<>(NullPointerException.class, 3);
class A<T> {
}
PublisherGenericArray<A> tttt = new PublisherGenericArray<A>(
A.class, 4);