2015-11-01 105 views
-1

這裏是我的代碼:爲什麼這個Java代碼不能編譯?

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()返回字符串,爲什麼編譯期待對象的列表?

+0

列表列表= p.stringList(;列表 list = p.stringList(); –

+0

將來,當詢問編譯器消息時,總是突出顯示編譯器不喜歡的行。它使得查找錯誤變得更容易。 –

回答

10

你分配你的List<String>到原始List變量:

List list = p.stringList(); 

因此,遍歷返回Object秒。

更改爲:)

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

我會接受一次我可以,謝謝.. –