【问题标题】:System.out.println - Is this method chaining in Java?System.out.println - 这个方法是否在 Java 中链接?
【发布时间】:2009-12-28 11:57:02
【问题描述】:

我想知道下面这段 Java 代码:

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

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

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

谢谢

GF

【问题讨论】:

    标签: java static-methods method-chaining


    【解决方案1】:

    不,这不是方法链接。你说得对 System 是一个类(只是一个普通类,而不是“静态” - 只有内部类可以是静态的),但 out 是类的一个静态字段(java.io.PrintStream 类型),并且只有println()PrintStream 的方法。

    这是一个方法链的例子:

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

      • "static" 仅用于内部类。
      • 是的,在您指出之前我已经纠正了我的错误只是,谢谢!
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-12-04
        • 2016-04-15
        • 1970-01-01
        • 2023-01-21
        • 2020-05-16
        • 1970-01-01
        • 2012-05-20
        • 2010-10-31
        • 1970-01-01
        相关资源
        最近更新 更多