Java 初始化构造函数中的ArrayList

Java 初始化构造函数中的ArrayList,java,arraylist,constructor,Java,Arraylist,Constructor,作为赋值的一部分,我应该创建一组矩形,并将这些对象放在ArrayList中,该列表将在构造函数中初始化。我想我把自己弄糊涂了。Eclipse告诉我不能对这个对象使用.add(new_rec),因为它属于(Double,Double)类型。我假设,因为ArrayList只是,这会导致一些问题。除此之外,我想我在别的地方被误导了,但我不知道在哪里 public class WhyWontThisWork { WhyWontThisWork(Double name, Double r

作为赋值的一部分,我应该创建一组矩形,并将这些对象放在
ArrayList
中,该列表将在构造函数中初始化。我想我把自己弄糊涂了。Eclipse告诉我不能对这个对象使用
.add(new_rec)
,因为它属于(
Double
Double
)类型。我假设,因为ArrayList只是
,这会导致一些问题。除此之外,我想我在别的地方被误导了,但我不知道在哪里

public class WhyWontThisWork {

        WhyWontThisWork(Double name, Double rec_name){
            Rectangle new_rec = new Rectangle(23.1,43.0);
            ArrayList<Double> name = new ArrayList<Double>();
            for(int i = 0; i < 10; i++){
                name.add(new_rec);
            }
        }
}

使用的ArrayList必须是

ArrayList<Rectangle> name = new ArrayList<Rectangle>();
ArrayList name=new ArrayList();

当您使用arrayList保存矩形时,它不会加倍。

这非常简单-您需要的名称类型应该是:

ArrayList<Rectangle> name = new ArrayList<Rectangle>();
ArrayList name=new ArrayList();
中的泛型类型表示要添加到ArrayList的对象类型。如果需要存储double数组,可以使用
ArrayList
如果它们是字符串,则
ArrayList


在您的情况下,您需要存储一个矩形列表,因此
ArrayList
是您的解决方案。

您的ArrayList必须是矩形类型才能执行此操作

ArrayList<Rectangle> name = new ArrayList<Rectangle>()
ArrayList name=new ArrayList()
Eclipse是正确的

ArrayList<Rectangle> name = new ArrayList<Rectangle>();
name.add(new_rec);
ArrayList name=new ArrayList();
名称。添加(新记录);

另外,参数和ArrayList
名称相同,请按如下方式更改:

   WhyWontThisWork(Double nameDouble, Double rec_name){
                Rectangle new_rec = new Rectangle(23.1,43.0);
                ArrayList<Rectangle> name = new ArrayList<Rectangle>();
                for(int i = 0; i < 10; i++){
                    name.add(new_rec);
                }
            }
为什么要这样做(双名双名,双记录名){
新矩形=新矩形(23.1,43.0);
ArrayList name=新的ArrayList();
对于(int i=0;i<10;i++){
名称。添加(新记录);
}
}

您正试图将一个
矩形
对象添加到一个
数组列表
,该列表包含
对象。这就是您看到错误的原因。正如其他答案所指出的,最好的解决方案可能是将列表更改为
ArrayList


也许你应该读一读Java或。

中的泛型主要原因是
矩形
不是
双精度
,此外,你必须为
名称
指定不同的名称,它们不能是在scope@epoch哎呀,我的命名错误太草率了。谢谢你指出这一点。那么
要用任何对象填充吗?我不明白为什么
Rectangle
在这里工作。更新了更多的解释-希望这有帮助。因此,如果我创建了一个类,比如说,
Kittens
,并且我需要用这些对象填充ArrayList,我会声明
ArrayList
?确切地说,这就是Java泛型的用途-为您提供了一种实现算法的类型安全方法(例如链表/数组列表),它们不是特定于特定的数据类型。最好使用接口,而不是
name
的具体实现类,即
List name=new ArrayList();
   WhyWontThisWork(Double nameDouble, Double rec_name){
                Rectangle new_rec = new Rectangle(23.1,43.0);
                ArrayList<Rectangle> name = new ArrayList<Rectangle>();
                for(int i = 0; i < 10; i++){
                    name.add(new_rec);
                }
            }