这可能没有解决方案,或者我可能找不到解决方案,但现在是:
!!注意:我知道下面的代码不正确。我只是想表明我想要完成什么。
我想做点什么:
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........;
//..
这可以以任何方式完成吗?使用静态方法,没有类的实例。
答案 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;
}
}