System.out.println - 这个方法是用Java链接的吗?

时间:2009-12-28 11:57:02

标签: java static-methods method-chaining

我想知道以下Java代码:

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

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

此外,这个概念被称为“方法链”吗?

由于

GF

3 个答案:

答案 0 :(得分:10)

不,这不是方法链接。你是System是一个类(只是一个普通类,而不是“静态” - 你只有内部类可以是静态的)是正确的,但out是类的静态字段(类型为{ {3}}),只有java.io.PrintStreamPrintStream的方法。

这是方法链的一个例子:

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

答案 1 :(得分:3)

System有一个成员变量'out',类型为PrintStream。这不是一种方法。

PrintStream有一个方法println(String)。

所以不,不是方法链。

据我所知,方法链接只是返回 this ,你可能会返回void,允许在单个语句中多次调用方法,也许是一个更自然的DSL表达式。您可以在StringBuilder的追加(字符串)方法

中看到它的实际效果
StringBuilder builder = new StringBuilder()
  .append("I am a ")
  .append("String")
  .append("Builder");

如果您有兴趣了解更多信息,Martin Fowler谈到了Method Chaining here

答案 2 :(得分:1)

out不是方法 - 它是PrintStream的一个实例,其中println是一种方法。

请参阅http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#out