0

我一直在尝试在 Eclipse 中热交换 Java 代码,但我不知道在 Eclipse 中热交换 Java 代码的限制和规则是什么,所以我的努力​​经常失败。如果有人可以提供关于如何在 Eclipse 中热交换代码的相对详细的解释,或者将我链接到一个会很棒的。

例如,如果我更改 的值,此代码会热交换u

public class apples extends tuna {

    public static void main(String[] args) throws InterruptedException {
        while (true) {
            ddop();
            Thread.sleep(1000);
        }
    }

    public static void ddop() {
        int u = 3;
        System.out.println(u);
    }
}

但这段代码没有:

public class apples extends tuna {
    static int u;
    public static void main(String[] args) throws InterruptedException {
        int u = 3;
        while (true) {
            System.out.println(u);
            Thread.sleep(1000);
        }
    }
}

谁能解释为什么?是的,我确实检查了“自动构建”标志并且正在调试模式下运行。

4

2 回答 2

1

我相信为了热交换方法的源,该方法必须在调用堆栈中。在您的第一个示例中,更改的方法被重复调用,而在第二个示例中,该方法被调用一次,然后才执行代码循环。如果代码在方法已经运行后发生更改,则该方法永远不会再次进入调用堆栈,并且无法获取代码更改。

于 2012-08-15T03:58:48.237 回答
0

我不是 100% 确定上面的例子,但一般来说,规则是你不能改变一个类的接口。例如,添加去矿方法、更改方法签名、添加/删除静态字段等。

于 2012-08-15T02:36:45.923 回答