2009-12-28 79 views
2

我在想下面這段Java代碼:System.out.println - 此方法鏈接在Java中嗎?

「System.out.println」。我對此正確:

「系統」是一個靜態類。 「.out」是類「System」的一種方法。這是我對「.println」輕微混淆的一點 - 這是什麼類/對象?

此外,這個概念被稱爲「方法鏈」?

由於

GF

回答

10

不,這不是方法鏈接。你是對的System是一個類(只是一個普通的類,而不是「靜態的」 - 只有內部類可以是靜態的),但out是類(java.io.PrintStream類型)的靜態字段,只有println()是一種方法的PrintStream

這是方法鏈接的示例:

String s = "Long String ".toUpperCase().substring(4).trim() 
3

System具有一個成員變量 '出',類型PrintStream的。這不是一種方法。

PrintStream有一個方法println(String)。

所以不行,不是方法鏈。

據我所知,方法鏈只是返回這個你可能返回void,允許在一個語句中多次調用方法,也許可以更自然地表達一個DSL。你可以看到它在StringBuilder的追加(String)方法

StringBuilder builder = new StringBuilder() 
    .append("I am a ") 
    .append("String") 
    .append("Builder"); 

如果你有興趣瞭解更多的行動,Martin Fowler的談論方法鏈接here

+0

「靜態」僅用於內部類。 – 2009-12-28 12:03:32

+0

是的,我在你指出前糾正了我的錯誤*,謝謝! – Brabster 2009-12-28 12:11:39