次のJavaコードについて疑問に思っています。
「System.out.println」。私はこれについて正しいです:
「システム」は静的クラスです。「.out」はクラス「System」のメソッドです。これは、「.println」について少し混乱している部分です-これはどのクラス/オブジェクトのメソッドですか?
また、この概念は「メソッドチェーン」として知られていますか?
ありがとう
GF
次のJavaコードについて疑問に思っています。
「System.out.println」。私はこれについて正しいです:
「システム」は静的クラスです。「.out」はクラス「System」のメソッドです。これは、「.println」について少し混乱している部分です-これはどのクラス/オブジェクトのメソッドですか?
また、この概念は「メソッドチェーン」として知られていますか?
ありがとう
GF
いいえ、メソッドチェーンではありません。クラスであることについては正しいですSystem
(「静的」ではなく、通常のクラスです-静的にできるのは内部クラスのみです)が、( java.io.PrintStream型の)out
クラスの静的フィールドであり、の方法。println()
PrintStream
これはメソッドチェーンの例です:
String s = "Long String ".toUpperCase().substring(4).trim()
クラスSystemには、PrintStream 型のメンバー変数「out」があります。メソッドではありません。
クラスPrintStreamにはメソッド println(String) があります。
いいえ、メソッドチェーンではありません。
私の知る限り、メソッドチェーンは、 void を返す可能性がある場所にthisを返すだけであり、1 つのステートメントで複数のメソッドを呼び出すことができ、おそらく DSL のより自然な表現になります。StringBuilderの append(String) メソッドで実際にそれを見ることができます
StringBuilder builder = new StringBuilder()
.append("I am a ")
.append("String")
.append("Builder");
さらに詳しく知りたい場合は、Martin Fowler が Method Chaining について説明しています。
out
はメソッドではありません - は のインスタンスでありPrintStream
、そのprintln
はメソッドです。
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#outを参照してください。