这是一个有点令人困惑的问题,所以我会尽力提出这个问题。
假设我在特定代码块之前和之后有一堆代码。代码块周围的代码始终保持不变,但 block 内的代码可以更改。为简单起见,请考虑环绕代码是一个双重嵌套的 for 循环:
for(int i = 0; i<width; i++){
for(int i = 0; i<height; i++){
// changing code block
}
}
现在,我想告诉编译器将不同的代码插入到程序中不同实例的代码块中。我该如何去做这样的事情?
最佳答案
如果我理解正确的话,您必须声明一个带有方法的接口(interface),并发送一个实现该接口(interface)的类的对象引用,该接口(interface)包含要实现的逻辑。基本代码示例:
interface Foo {
public void doFoo(int i, int j);
}
class Bar implements Foo {
@Override
public void doFoo(int i, int j) {
System.out.println(i + j);
}
}
class Baz implements Foo {
@Override
public void doFoo(int i, int j) {
System.out.println(i - j);
}
}
在当前代码块中:
public void doXxx(Foo foo) {
//...
for(int i = 0; i<width; i++){
for(int j = 0; j<width; j++){
// changing code block
//solved using interfaces
foo.doFoo(i, j);
}
}
//...
}
现在您可以使用 Foo
的实现调用 doXxx
,例如 Bar
或 Baz
的实例:
doXxx(new Bar());
doXxx(new Baz());
关于java - 如何更改最里面的嵌套语句,但保留外部语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567446/