链式静态方法

时间:2013-12-29 08:11:49

标签: java android

这可能没有解决方案,或者我可能找不到解决方案,但现在是:

!!注意:我知道下面的代码不正确。我只是想表明我想要完成什么。

我想做点什么:

public class ActionBarHandler{

    public static ActionBarHandler withAddOption(){
            //do something ...
        return ActionBarHandler;
    }
    public static ActionBarHandler withEditOption(){
           //do something ...
           return ActionBarHandler;
    }
}

...为了在另一个类中的某个地方执行以下操作(即将它放在一行中):

//..
ActionBarHandler.withAddOption().withEditOption().with........;
//..

...而不是这样做:

//..
ActionBarHandler.withAddOption();
ActionBarHandler.withEditOption();
ActionBarHandler.with........;
//..   

这可以以任何方式完成吗?使用静态方法,没有类的实例。

4 个答案:

答案 0 :(得分:4)

是的,将方法声明为

public static ActionBarHandler withAddOption(){

然后返回null

但我不推荐这个。使用方法链接的对象。从概念的角度来看,在实例上调用static方法没有意义,甚至在null引用上更少。仅仅因为这个原因,您应该考虑将您的设计重构为链式实例方法调用,即。使用对象。

答案 1 :(得分:2)

您正在描述'流畅的界面'模式。我认为最好的解决方案是使用“构建器”模式。只是google'java builder pattern',你会发现很多关于它的文章。我很难选择一篇文章给你看。

答案 2 :(得分:0)

下面的代码显示了链接无界函数方法引用。静态引用没有比这更难的了。

A.f1 called.......
A.f2 called.......
B.f1 called.......
A.f2 called.......
B.f3 called.......
B.f1 called.......

输出:

{
    "special_note": "Some very long special note",
    "extension_conditions": [
            {
                "condition_id": "5bfb8b8d-3a34-4cc3-9152-14139953aedb",
                "condition_type": "OPTION_ONE"
            },
            {
                "condition_id": "fbb60052-806b-4ae0-88ca-4b1a7d8ccd97",
                "condition_type": "OPTION_TWO"
            }
        ],
    "floor_drawings_file": "137c3ec3-f078-44bb-996e-161da8e20f2b",
}

答案 3 :(得分:-1)

public class ActionBarHandler
{

    public static Class<ActionBarHandler> withAddOption(){
            //do something ...
        return ActionBarHandler.class;
    }
    public static Class<ActionBarHandler> withEditOption(){
           //do something ...
           return ActionBarHandler.class;
    }
}