[英]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.