9

在 StringBuilder 类中,我可以这样做:

StringBuilder sb = new StringBuilder();
sb.append( "asd").append(34);

方法 append 返回 StringBuilder 实例,我可以继续调用它。

我的问题是可以在静态方法上下文中这样做吗?没有类实例

4

5 回答 5

14

是的。像这样(未经测试)。

public class Static {

  private final static Static INSTANCE = new Static();

  public static Static doStuff(...) {
     ...;
     return INSTANCE;
  }

  public static Static doOtherStuff() {
    ....
    return INSTANCE;
  }
}

您现在可以拥有类似的代码。

Static.doStuff(...).doOtherStuff(...).doStuff(...);

我会建议反对它。

于 2010-12-18T12:23:31.600 回答
6

这称为方法链

为此,您总是需要一个实例化的对象。所以,对不起,但你不能在静态上下文中这样做,因为没有与之关联的对象。

于 2010-12-18T12:04:13.263 回答
2

你想要这个吗 ?

public class AppendOperation() {
    private static StringBuilder sb =  new StringBuilder(); 

    public static StringBuilder append(String s){
        return sb.append(s);
    }

    public static void main(String... args){

         System.out.println(AppendOperation.append("ada").append("dsa").append("asd"));

    }

}

也许我没有正确理解问题(静态上下文)

你是这个意思吗?

静止的 {

} //当然你也可以这样做

如果不是以上所有,你不能没有任何静态方法,因为 append() 不是静态的

于 2010-12-18T11:53:34.903 回答
1

您想要静态的构建器模式吗?不。最好将您的静态数据转换为实例。

于 2010-12-18T11:59:37.313 回答
1

这里所说,您可以简单地返回null。例如:

public class MyClass {

    public static MyClass myMethod() {
        doSomething();
        return null;
    }
}
于 2019-06-11T08:03:54.133 回答