java - 如何更改最里面的嵌套语句,但保留外部语句?

标签 java

这是一个有点令人困惑的问题,所以我会尽力提出这个问题。

假设我在特定代码块之前和之后有一堆代码。代码块周围的代码始终保持不变,但 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,例如 BarBaz 的实例:

doXxx(new Bar());
doXxx(new Baz());

关于java - 如何更改最里面的嵌套语句,但保留外部语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567446/

相关文章:

java - 将仅用于单一目的的单个 util 方法放在哪里? ( java )

java - JButton - 如何连接?

java - RCP - 应用程序没有 Activity 窗口

java - 从 URL 读取 Excel 文件

java.lang.StringIndexOutOfBoundsException : String index out of range: 6 (in. java.lang.String)

java - 无法在 Java 中使用 Autoit 启动 cmd 或记事本

java - 代码执行后数组的值

java - 迭代 ArrayList 中的连续对象对

java - 对象引用 - 什么需要更多空间?

java - 如何在 ForkJoinPool 中阻塞队列?