2

我想知道以下一段 Java 代码:

“System.out.println”。我是对的:

“系统”是一个静态类。“.out”是“System”类的一个方法。这是我对“.println”有点困惑的一点——这是什么类/对象的方法?

另外,这个概念是否称为“方法链接”?

谢谢

GF

4

3 回答 3

10

不,这不是方法链接。你是System一个类(只是一个普通类,而不是“静态” - 只有内部类可以是静态的)是正确的,但out它是类的静态字段(类型为java.io.PrintStream),并且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,允许在单个语句中多次调用方法,并且可能是更自然的 DSL 表达式。您可以在StringBuilder的 append(String) 方法中看到它的实际效果

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

如果您有兴趣了解更多信息,Martin Fowler在这里谈到了方法链。

于 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 回答