【发布时间】:2009-12-28 11:57:02
【问题描述】:
我想知道下面这段 Java 代码:
“System.out.println”。我是对的:
“系统”是一个静态类。 “.out”是“System”类的一个方法。这是我对“.println”有点困惑的一点——这是什么类/对象的方法?
另外,这个概念是否称为“方法链”?
谢谢
GF
【问题讨论】:
标签: java static-methods method-chaining
我想知道下面这段 Java 代码:
“System.out.println”。我是对的:
“系统”是一个静态类。 “.out”是“System”类的一个方法。这是我对“.println”有点困惑的一点——这是什么类/对象的方法?
另外,这个概念是否称为“方法链”?
谢谢
GF
【问题讨论】:
标签: java static-methods method-chaining
不,这不是方法链接。你说得对 System 是一个类(只是一个普通类,而不是“静态” - 只有内部类可以是静态的),但 out 是类的一个静态字段(java.io.PrintStream 类型),并且只有println() 是PrintStream 的方法。
这是一个方法链的例子:
String s = "Long String ".toUpperCase().substring(4).trim()
【讨论】:
System 类有一个 PrintStream 类型的成员变量“out”。这不是一种方法。
PrintStream 类有一个方法 println(String)。
所以不,不是方法链接。
据我所知,方法链接只是返回 this,您可能会返回 void,从而允许在单个语句中多次调用方法,并且可能是更自然的 DSL 表达式。您可以在 StringBuilder 的 append(String) 方法中看到它的作用
StringBuilder builder = new StringBuilder()
.append("I am a ")
.append("String")
.append("Builder");
如果您有兴趣了解更多信息,Martin Fowler 谈到了方法链here。
【讨论】:
out 不是方法——它是PrintStream 的一个实例,其中println 是一个方法。
见http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#out
【讨论】: