繁体   English   中英

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

[英]error: incompatible types: Object cannot be converted to Trees

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

然而,这是一个任务,它要求打印被删除的行。 这是我遇到一些麻烦的地方。 现在在我删除一行的方法中,我有这个:

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.

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

Trees objToRemove = list.get(number);

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

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

当您实例化您的 List 时,而不是:

List list = new ArrayList<Trees>();

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

List<Trees> list = new ArrayList();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM