incompatible types: Object cannot be converted to String

时间:2025-01-30 20:28:43

在做题过程中,编译器报错,想了好久终于知道为啥错了,之前做集合的题目总是给了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类了