如何在java中嵌套方法以强制用户使用嵌套名称?
我正在编写一个库,为了提高可读性,我想强制用户使用嵌套方法来调用正确的函数 例如,这是我的类看起来像:如何在java中嵌套方法以强制用户使用嵌套名称?,java,android,intellij-idea,Java,Android,Intellij Idea,我正在编写一个库,为了提高可读性,我想强制用户使用嵌套方法来调用正确的函数 例如,这是我的类看起来像: 公共类Foo{ public void methodA(){} public void methodB(){} public void methodC(){} } 我对用户的期望是: Foo-Foo=new-Foo(); foo.methodA.methodB(); foo.methodA.methodC(); 通过调用methodA作为前缀来调用方法B&C,这称为方法链接。您需要将所有方
公共类Foo{
public void methodA(){}
public void methodB(){}
public void methodC(){}
}
我对用户的期望是:
Foo-Foo=new-Foo();
foo.methodA.methodB();
foo.methodA.methodC();
通过调用methodA作为前缀来调用方法B&C,这称为方法链接。您需要将所有方法的返回类型设置为与类相同
public class Foo{
public Foo methodA()
public Foo methodB()
public Foo methodC()
}
现在,客户端只需调用:
foo.methodA().methodB(), etc.
您可以有一个“终端方法”,即不返回值的方法。比如说
public void methodD();
此方法将在最后调用
foo.methodA().methodB().methodC().method();
由于返回类型为void,此行本身将有效
请看一下method chaining/builder模式的YouTube视频,会很清楚的 这称为方法链接。您需要将所有方法的返回类型设置为与类相同
public class Foo{
public Foo methodA()
public Foo methodB()
public Foo methodC()
}
现在,客户端只需调用:
foo.methodA().methodB(), etc.
您可以有一个“终端方法”,即不返回值的方法。比如说
public void methodD();
此方法将在最后调用
foo.methodA().methodB().methodC().method();
由于返回类型为void,此行本身将有效
请看一下method chaining/builder模式的YouTube视频,会很清楚的 要强制用户使用methodA访问methodB,可以使用内部类。 在methodB中,您可以使用Foo.this访问Foo对象
public class Foo{
public Bar methodA()
{
// ...
return new Bar();
}
public class Bar {
private Bar() {}; // only methodA can create a Bar object
public void methodB(){}
public void methodC(){}
}
}
要强制用户使用methodA访问methodB,可以使用内部类。 在methodB中,您可以使用Foo.this访问Foo对象
public class Foo{
public Bar methodA()
{
// ...
return new Bar();
}
public class Bar {
private Bar() {}; // only methodA can create a Bar object
public void methodB(){}
public void methodC(){}
}
}
在阅读了您的问题之后,我想您是在询问构建器设计模式,其中每个方法的返回类型都是相同的类对象,您可以这样创建调用层次结构
obj.aMethod().bMethod().cMethod();
在您的示例中,只需执行以下操作:
public class Foo{
private static final Foo instance = new Foo();
private Foo(){}
public static Foo getInstance(){
return instance;
}
public Foo methodA(){
//Do stuff
return getInstance();
}
public Foo methodB(){}
public Foo methodC(){}
}
现在可以调用类似于objfoo.getInstance().methodA().methodB()代码>
希望它能帮助你 在阅读了您的问题之后,我想您是在问构建器设计模式,其中每个方法返回类型都是相同的类对象,您可以这样创建调用层次结构
obj.aMethod().bMethod().cMethod();
在您的示例中,只需执行以下操作:
public class Foo{
private static final Foo instance = new Foo();
private Foo(){}
public static Foo getInstance(){
return instance;
}
public Foo methodA(){
//Do stuff
return getInstance();
}
public Foo methodB(){}
public Foo methodC(){}
}
现在可以调用类似于objfoo.getInstance().methodA().methodB()代码>
希望它能帮助你 。看到这个链接你不能在Java中嵌套方法。请看我编辑的答案!希望对你有帮助!。看到这个链接你不能在Java中嵌套方法。请看我编辑的答案!希望它能帮助你!谢谢,但这不是建设者模式。我试图强制用户,使他/她不能直接调用methodB,必须通过methodAOh确定,然后您必须返回methodA中相同类的对象,然后您可以使用该方法调用任何方法。谢谢,但这不是生成器模式。我试图强制用户,使他/她不能直接调用methodB,必须通过methodAOh确定,然后您必须返回methodA中相同类的对象,然后您可以使用该方法调用任何方法。