Java 如何使用arraylist的get(int index)方法,将节点作为带有数据字段的记录
我需要澄清如何使用get(int index)方法检查arraylist中节点的记录数据字段Java 如何使用arraylist的get(int index)方法,将节点作为带有数据字段的记录,java,arraylist,Java,Arraylist,我需要澄清如何使用get(int index)方法检查arraylist中节点的记录数据字段 import java.util.ArrayList; public class ArrayNodeDemo { public static void main(String args[]) { ArrayList<Object> lstObject = new ArrayList<Object>(); Person p1 = new
import java.util.ArrayList;
public class ArrayNodeDemo {
public static void main(String args[]) {
ArrayList<Object> lstObject = new ArrayList<Object>();
Person p1 = new Person();
p1.setPersonId(1);
p1.setPersonName("Tom");
lstObject.add(p1);
Person p2 = new Person();
p2.setPersonId(2);
p2.setPersonName("Jerry");
lstObject.add(p2);
但是,以下内容将获取一个错误:
System.out.println("1st record : " + lstObject.get(0).getPersonId());
System.out.println("2nd record : " + lstObject.get(1).getPersonId());
}
}
使用当前的
ArrayList
声明,lstObject.get(0)
返回一个Object
引用,并且并非所有Object
实例都有getPersonId()
方法(事实上,大多数实例没有),因此编译器不允许lstObject.get(0).getPersonId()
您应该使用要放在ArrayList
中的确切类型:
ArrayList<Person> lstObject = new ArrayList<Person>();
ArrayList lstObject=new ArrayList();
这将让编译器知道
lstObject.get(0)
返回对Person
的引用,因此编译器将允许您为该引用调用getPersonId()
。问题是,您将ArrayList
中的元素指定为对象,因此Java不知道如何调用getPersonId()
。它可以是任何物体。仅使用get()
获取对象运行良好,因为从对象继承的每个类中都有一个默认方法toString()
。您应该将数组声明为
ArrayList<Person> lstObject = new ArrayList<Person>();
ArrayList lstObject=new ArrayList();
你有几个选择。
首先,可以在数组列表声明中将对象更改为Person,也可以在打印中添加对Person的强制转换,如下所示:
System.out.println("1st record : " + ((Person)lstObject.get(0)).getPersonId());
System.out.println("2nd record : " + ((Person)lstObject.get(1)).getPersonId());
为什么要指定对象
的元素类型?您是否已将这些Person
实例分配给对象
变量,并期望能够访问getPersonId
?
System.out.println("1st record : " + ((Person)lstObject.get(0)).getPersonId());
System.out.println("2nd record : " + ((Person)lstObject.get(1)).getPersonId());