静态上下文中的Java方法调用链接

时间:2010-12-18 11:51:01

标签: java static-methods method-chaining

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

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

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

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

5 个答案:

答案 0 :(得分:11)

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

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(...);

我会建议反对它。

答案 1 :(得分:6)

这称为方法链接

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

答案 2 :(得分: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()不是静态的

答案 3 :(得分:2)

您希望构建器模式是静态的吗?不。最好将静态转换为实例。

答案 4 :(得分:0)

here所述,您只需返回null。 例如:

public class MyClass {

    public static MyClass myMethod() {
        doSomething();
        return null;
    }
}