2

次のJavaコードについて疑問に思っています。

「System.out.println」。私はこれについて正しいです:

「システム」は静的クラスです。「.out」はクラス「System」のメソッドです。これは、「.println」について少し混乱している部分です-これはどのクラス/オブジェクトのメソッドですか?

また、この概念は「メソッドチェーン」として知られていますか?

ありがとう

GF

4

3 に答える 3

10

いいえ、メソッドチェーンではありません。クラスであることについては正しいですSystem(「静的」ではなく、通常のクラスです-静的にできるのは内部クラスのみです)が、( java.io.PrintStream型の)outクラスの静的フィールドであり、の方法。println()PrintStream

これはメソッドチェーンの例です:

String s = "Long String ".toUpperCase().substring(4).trim()
于 2009-12-28T12:02:06.407 に答える
3

クラス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 について説明しています

于 2009-12-28T12:01:11.207 に答える
1

outはメソッドではありません - は のインスタンスでありPrintStream、そのprintlnはメソッドです。

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#outを参照してください。

于 2009-12-28T11:59:40.260 に答える