如何在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