错误:不兼容的类型:对象无法转换为树



我有三种方法。一个从文件中读取并将每一行作为对象添加到列表中。另一个要求一行并将其删除。这部分很好。

但是,这是针对它要求打印要删除的行的作业。这就是我遇到一点麻烦的地方。现在在我的删除一行的方法中,我有这个:

Trees objToRemove = list.get(number);
System.out.println("Removing: " + objToRemove);

我试图从指定位置(数字)的列表中获取对象。

我收到此错误

不兼容的类型:对象无法转换为树。

树是,

Trees tree = new Trees (name, height, diameter);

位于提到的第一种方法中。

我的问题是,如果在另一种方法中定义了该对象,我如何访问该对象?另外,我目前做错了什么?

编辑:更改为

  Trees objToRemove = (Trees) list.get(number);

它有效!

谢谢。

您的ArrayList类不是类型安全的。因此,默认情况下,get(int index)将为您提供Object类的对象。

Trees objToRemove = (Trees) list.get(number); //try this

而不是

 Trees objToRemove = (Trees) list.get(number); 

或者将list对象更改为类型安全对象,以便无法将其他类型的元素添加到List

List<Trees> list = new ArrayList<Trees>(); // now no type Casting Needed.
 Trees objToRemove = list.get(number); // This code will Work Fine if You use a Type-Safe ArrayList.

还有其他各种原因 在这里查看 为什么使用泛型

当您实例化列表时,而不是:

List list = new ArrayList<Trees>();

将类型放在另一侧,如下所示:

List<Trees> list = new ArrayList();

第一种方式返回Object,第二种返回特定类型

Trees objToRemove = list.get(number);

您正在将对象分配给不兼容的 Trees 类。你需要投射它。

Trees objToRemove = (Trees) list.get(number);

相关内容

  • 没有找到相关文章

最新更新