如何在Java中声明参数化对象的数组?

如何在Java中声明参数化对象的数组?,java,generics,arraylist,Java,Generics,Arraylist,我已经用PDRectangle参数声明了PDPage Float width = 8.5f; Float height = 5f; Float dpi = 72f; PDRectangle size = new PDRectangle(width*dpi, height*dpi); PDPage page = new PDPage(size); 但是我想在一个数组中声明多个具有自定义PDRectangle大小的PDPage 不完全像: ArrayList<PDPage> page

我已经用
PDRectangle
参数声明了
PDPage

Float width = 8.5f;
Float height = 5f;
Float dpi = 72f;
PDRectangle size = new PDRectangle(width*dpi, height*dpi);
PDPage page = new PDPage(size);
但是我想在一个数组中声明多个具有自定义
PDRectangle
大小的
PDPage

不完全像:

ArrayList<PDPage> page = new ArrayList<PDPage(size)>();
ArrayList page=new ArrayList();

创建列表和初始化列表元素之间有区别。列表的初始化只关心泛型类规范:

List<PDPage> page = new ArrayList<>();

正如Mureinik在他的回答中所说的,你首先要实例化列表

ArrayList pages=new ArrayList();
在向其添加实例之前(例如,十次):

for(int i=0;i<10;i++){
页面。添加(新的PDPage(大小))
}

如果严格要求列表中的所有对象具有相同的维度,理论上可以创建一个子类:

公共类特殊页面{
专用静态最终浮动宽度=8.5f;
专用静态最终浮动高度=5f;
专用静态最终浮点dpi=72f;
私有静态最终PDRectangle大小=新PDRectangle(宽度*dpi,高度*dpi);
公共专用页(){
超级(尺寸);
}
}
然后初始化列表并添加对象,如下所示:

ArrayList pages=new ArrayList();
对于(int i=0;i<10;i++){
添加(新的SpecialPage())
}

所有
PDPage
对象的大小是否相同?在Java中,我们只能对类型使用泛型,而不能对值使用泛型。因此,我们将编写
新的ArrayList()。如果我们需要一个具有固定大小的
PDPage
列表,我们需要从
PDPage
中进行子类化,并在子类中固定大小。--为什么
列表
不够?
page.add(new PDPAge(size)); // This can be done multiple times, e.g. in a loop