这可能会在StackOverflow的深处迷失,主要是一个学术问题,但我很好奇,似乎无法找到正确的方法来解决这个问题。
这是我的情况:我有一些方法依赖于某些条件是真的。事实证明,我有几种方法依赖于这些条件是真的。如果这些条件为真,则不会执行任何操作,并且需要一组条件的methodA()
将继续执行。否则,它将给出一个特定的错误,具体取决于哪个条件是假的,并且...我们将得到它还做什么。
由于我有多个方法需要这个 函数 ,我将它移动到它自己的静态函数needs()
。然后,我将方法调用插入到需要要满足的每个方法的顶部。
问题:有没有办法让某些方法强制调用方法返回?因此,在我的示例中,needs()
会导致methodA()
返回,而methodA()
除了首先调用needs()
之外,还需要执行任何特殊操作。
同样,这主要是学术性的..我知道有很简单的方法可以避免这种情况并绕过它,但我想知道你是否能够做到这一点。请不要回复“为什么你甚至试图这样做?只需做一个if语句并让needs()
返回boolean
。”我知道。不过,这不是我的问题。
谢谢!
答案 0 :(得分:2)
你不能直接这样做,但你可以:
interface Methods {
void methodA();
void methodB();
void methodC();
}
class MethodsImpl implements Methods {
...
}
class ConditionalMethodsWrapper implements Methods {
private final Methods delegate;
ConditionalMethodsWrapper(Methods delegate) {
this.delegate = delegate;
}
boolean condition() {
...
}
void methodA() {
if (condition()) {
delegate.methodA();
}
}
void methodB() {
if (condition()) {
delegate.methodB();
}
}
void methodC() {
if (condition()) {
delegate.methodC();
}
}
}
答案 1 :(得分:1)
没有办法直接控制父方法的行为(我不介意任何反射黑客攻击),因为该方法只知道自身的一切(如果你没有得到堆栈跟踪),但你可能会抛出一个Exception
并添加一个空的catch
子句。