gpt4 book ai didi

Java - 限制可以调用的方法

转载 作者:行者123 更新时间:2023-11-29 06:46:04 31 4
gpt4 key购买 nike

我将方法设置为 public,因为它们必须由外部类调用,但我只希望它们由一个或两个方法调用。被其他方法调用可能会在我的程序中产生错误。所以,为了防止我不小心围绕我自己的方法编程,我一直在我想限制调用者的方法中做这样的事情:

if(trace.length<2){
throw new Exception("Class should not call its own function.");
}else if(trace[1].getClassName()!=desiredClassName || trace[1].getMethodName()!=desiredMethodName){
throw new Exception(trace[1].getClassName()+"\" is invalid function caller. Should only be called by "+desiredClassName+"->"+desiredMethodName+".");
}

还有什么我应该做的吗,或者我应该不要忘记我的程序是如何工作的?

最佳答案

您应该使用可见性来限制调用 - 公开一个方法(或者就此而言,对其进行 javadocing)是行不通的,除非您有纪律(并且您也控制了调用者)。从你的描述来看,你两者都不是。

您可以做的是将类包设为私有(private),并将其与该类的两个调用者放在同一个包中。只要你有一个合适的包结构,这就可以工作。例如。:您的类(class)只能由 A 和 B 调用:

package thepackage.of.a.and.b;
//imports here
class CallableByAB {
public void methodA(){}
public void methodB(){}
}

答:

package thepackage.of.a.and.b;
public class A {
/*...other code here */
new CallableByAB().methodA();
/*...other code here */
}

乙:

package thepackage.of.a.and.b;
public class B {
/*...other code here */
new CallableByAB().methodB();
/*...other code here */
}

其他类不能调用 new CallableByAB() 或导入它。因此,安全。

关于Java - 限制可以调用的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766424/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com