gpt4 book ai didi

Java ArrayList - 无法读回对象的属性

转载 作者:行者123 更新时间:2023-12-01 14:42:06 25 4
gpt4 key购买 nike

我希望能够创建对象的数组列表,然后能够编辑和读回每个对象的一些简单属性。在本例中,为字符串(颜色)整数 (X)。我似乎无法使下面的简单代码起作用。请注意,我知道人们有时会在数组列表中使用 <> 表示法,但我读到,不使用 <> 表示法也是可以的,目前我对 Java 还很陌生,希望让事情尽可能简单。

目前我在被注释掉的行上遇到错误(找不到符号 X)

import java.util.ArrayList;

public class ArrayList_of_Objects {

public static void main(String[] args)
{

ArrayList al = new ArrayList();

for(int i =0;i<5;i++)
{
MyObj ob1 = new MyObj();
ob1.X = i + 5;
al.add(ob1);
//System.out.println("X: "+al.get(i).X);
}
for(int j=0;j<5;j++)
{System.out.println("X: "+al.get(j).X);}

al.get(3).X=4;
al.get(3).colour="orange";
System.out.println(al.get(3).X);
System.out.println(al.get(3).colour);
}

}

class MyObj
{
int X;
String colour;
}

最佳答案

是的,您需要使用generics说出您的列表中将包含哪种对象:

ArrayList<MyObj> al = new ArrayList<MyObj>();

否则编译器不知道 al.get(3) 旨在返回 MyObj 而不是任何东西。使用此代码,它不仅可以修复 get 调用,还可以防止您意外地将不适当类型的对象添加到列表中。

此外,通常首选将变量声明为适当的接口(interface)类型,例如:

List<MyObj> al = new ArrayList<MyObj>();

(有时您确实需要它是具体类型,但通常更喜欢编程而不是接口(interface)。)

泛型是一个庞大的主题,但是本答案开头链接的教程应该可以帮助您继续下去。 Java Generics FAQ是了解更多信息的绝佳资源。

关于Java ArrayList - 无法读回对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15848124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com