为什么这个Java代码没有编译?

为什么这个Java代码没有编译?,java,Java,这是我的密码: public class MessagePrettier<T> { private final T uglyMessage; public MessagePrettier(T uglyMessage) { this.uglyMessage = uglyMessage; } public List<String> stringList() { List<String> stri

这是我的密码:

public class MessagePrettier<T> {

    private final T uglyMessage;

    public MessagePrettier(T uglyMessage) {
        this.uglyMessage = uglyMessage;
    }

    public List<String> stringList() {
        List<String> strings = new ArrayList<String>();
        strings.add("Pretty version of: " + uglyMessage.toString());
        return strings;
    }

    public static void main(String[] args) {
        MessagePrettier<Integer> p = new MessagePrettier<Integer>(new Integer("25"));
        List list = p.stringList();
        for (String s : list) {
            System.out.println(s);
        }
    }

}

Well stringList()返回字符串列表,为什么编译器需要对象?

您正在将
列表
分配给原始
列表
变量:

List list = p.stringList();
因此,迭代它会返回
Object
s

将其更改为:

List<String> list = p.stringList();
List List=p.stringList();

List List=p.stringList();to List=p.stringList();将来,当询问编译器消息时,始终突出显示编译器不喜欢的行。这样可以更容易地找到错误。
List<String> list = p.stringList();