Java,找不到符号,无法从arraylist提取数据类型

Java,找不到符号,无法从arraylist提取数据类型,java,arraylist,Java,Arraylist,但是我得到了一个不兼容的类型错误。当仅仅使用代码时 Packet thisShipment = shipmentList.get(i); 在displayLightPackages方法中,我得到一个错误,编译器无法找到符号isLight。我怀疑这个错误与arraylist中的数据类型有关,但除此之外,我在这一点上不知所措 谢谢你你的ArrayList没有被输入,所以所有来自它的东西都是对象。相反,Object没有isLight()方法,因此出现“找不到符号”错误 要解决此问题,请键入Array

但是我得到了一个不兼容的类型错误。当仅仅使用代码时

Packet thisShipment = shipmentList.get(i);
在displayLightPackages方法中,我得到一个错误,编译器无法找到符号isLight。我怀疑这个错误与arraylist中的数据类型有关,但除此之外,我在这一点上不知所措


谢谢你

你的
ArrayList
没有被输入,所以所有来自它的东西都是
对象
。相反,
Object
没有
isLight()
方法,因此出现“找不到符号”错误

要解决此问题,请键入
ArrayList

shipmentList.get(i).isLight()

在这两个选项中,键入
ArrayList
更简单、更安全,因为您不必记得每次从中获取值时都进行强制转换。

您的
ArrayList
没有被键入,因此来自它的所有内容都是
对象。相反,
Object
没有
isLight()
方法,因此出现“找不到符号”错误

要解决此问题,请键入
ArrayList

shipmentList.get(i).isLight()
在这两个选项中,键入
ArrayList
更简单、更安全,因为您不必记得每次从中获取值时都要强制转换

private ArrayList shipmentList=new ArrayList()

private ArrayList shipmentList=new ArrayList()

编译器不知道shipmentList保存数据包。事实上,编译器知道shipmentList是一个对象列表。所以您可以执行
shipmentList.get(i).toString()
,因为
toString()
是来自对象类的方法。但是您不能在
对象
上调用
isLight()
方法,因为它在
对象
上下文中不存在。您必须明确地说shipmentList是
ArrayList
的类型,或者将元素强制转换为Packet:
packetThisShipping=(Packet)shipmentList.get(i)

更改

private ArrayList shipmentList=new ArrayList()

private ArrayList shipmentList=new ArrayList()


编译器不知道shipmentList保存数据包。事实上,编译器知道shipmentList是一个对象列表。所以您可以执行
shipmentList.get(i).toString()
,因为
toString()
是来自对象类的方法。但是您不能在
对象
上调用
isLight()
方法,因为它在
对象
上下文中不存在。您必须明确地说shipmentList是
ArrayList
的类型,或者将元素强制转换为Packet:
packetThisShipping=(Packet)shipmentList.get(i)

哇,谢谢你,伙计。彻底解决了我的问题,我学到了一些东西!再次感谢。哇,谢谢你。彻底解决了我的问题,我学到了一些东西!再次感谢。
shipmentList.get(i).isLight()
private ArrayList<Packet> shipmentList = new ArrayList<>();
((Packet)shipmentList.get(i)).isLight()