在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);