在做题过程中,编译器报错,想了好久终于知道为啥错了,之前做集合的题目总是给了new集合的模板,模板都是返回String类,这次自己写,才发现了这个问题。
编译器报错: incompatible types: Object cannot be converted to String(java: 不兼容的类型: 无法转换为)
下面是错误代码:
package step;
import .*;
public class Collection {
public static void main(String[] args) {
List arrayList = new ArrayList();
("张三");
("李四");
("王五");
//使用foreach遍历arrayList集合
for(String str : arrayList) {
(str);
}
}
}
那么为什么会报错呢?
看看修改后的代码就明白了:
改法一:(修改接收类型)
package step;
import .*;
public class Collection {
public static void main(String[] args) {
List arrayList = new ArrayList();
("张三");
("李四");
("王五");
//使用foreach遍历arrayList集合
for(Object obj : arrayList) { // 修改处
(obj);
}
}
}
输出:
张三
李四
王五
因为集合arrayList默认返回Object类,而不是String类
改法二:修改返回类型
package step;
import .*;
public class Collection {
public static void main(String[] args) {
List<String> arrayList = new ArrayList<>(); // 修改处
("张三");
("李四");
("王五");
//使用foreach遍历arrayList集合
for(String str : arrayList) {
(str);
}
}
}
输出:
张三
李四
王五
这样arrayList返回的就是String类,而不是Object类了