[英]Why is this Java code not compiling?
这是我的代码:
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);
}
}
}
当我编译这段代码时,我会得到:
java: incompatible types
required: java.lang.String
found: java.lang.Object
那么 stringList() 返回一个字符串列表,为什么编译器需要对象?
您将List<String>
分配给原始List
变量:
List list = p.stringList();
因此,迭代它返回Object
s。
将其更改为:
List<String> list = p.stringList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.