呼叫System.out.println(MethodCall.getContent().toSting());
甚至不會編譯。如果編譯的話,你的MethodCall類中有一個靜態的getContent()
方法,那就是被調用的方法。
的方法getContent()
方法在你的問題也不是一成不變的,所以你需要它的類的實例調用它,就像這樣:
InnerValue innerValue = new InnerValue();
System.out.println(innerValue.getContent());
執行此操作時,不要忘了進口:
import <yourpackagename>.MethodCall.InnerValue;
創建InnerValue
比如像這並沒有太大的意義,但是,由於內容列表中不可避免地會產生空...
至於如何打印列表的內容,考慮這個例子:
class SerializableImpl implements Serializable {
private static final long serialVersionUID = 1L;
};
List<Serializable> list = new ArrayList<Serializable>();
list.add(new SerializableImpl());
System.out.println(list);
使用此代碼,我會輸出:
[test.MyTestClass[email protected]]
這是因爲ArrayList實現在列表中的每個條目上調用toString()
。但是由於我們沒有爲類SerializableImpl
定義toString()
,因此調用了Object
類中的默認toString()
方法。我們如何解決這個問題?考慮以上代碼的替代方案:
class SerializableInteger implements Serializable {
private static final long serialVersionUID = 1L;
private int value;
public SerializableInteger(int value){
this.value = value;
}
public String toString(){
return "value = " + value;
}
};
List<Serializable> list = new ArrayList<Serializable>();
list.add(new SerializableInteger(42));
System.out.println(list);
現在會發生什麼?嗯...因爲我們爲SerializableInteger
類中定義的toString()
方法,該方法將被調用,並且我們會在收到輸出:
[value = 42]
因此,簡言之:當你調用toString()
上一個List
,該列表中的條目的toString()
方法將被調用。因此,如果您想要可讀輸出,請確保您添加到列表中的所有對象都已定義toString()
方法。
這是複製錯字? '.getContent.toSting())' – Nim
你期望什麼結果? – 2012-09-03 10:07:36
您必須確保列表中的所有對象都具有合理的'toString'方法。否則,您將看到默認的「MyClass @ def0912」樣式輸出。 –