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

メソッドのソースをホット スワップするには、そのメソッドがコール スタックにある必要があると思います。最初の例では、変更されたメソッドが繰り返し呼び出されますが、2 番目の例では、メソッドが 1 回呼び出されてからコード ループが実行されます。メソッドが既に実行された後にコードが変更された場合、そのメソッドはコール スタックに再び含まれることはなく、コードの変更を取得することはできません。

于 2012-08-15T03:58:48.237 に答える
0

上記の例について 100% 確信があるわけではありませんが、一般的に、クラスのインターフェイスは変更できないという規則があります。たとえば、鉱石除去メソッドの追加、メソッド シグネチャの変更、静的フィールドの追加/削除などです。

于 2012-08-15T02:36:45.923 に答える