2012-08-15 44 views
0

我一直在試圖玩弄在Eclipse中熱交換進行Java代碼的Java代碼熱交換,但我不知道是什麼的侷限性和在Eclipse中熱交換進行Java代碼的規則,所以我的努力​​經常失敗。如果任何人都可以提供關於如何在Eclipse中熱切換代碼的​​相對詳細的解釋或者將我鏈接到一個非常棒的代碼。如何啓用在Eclipse

例如,這個代碼hotswaps如果我改變的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); 
     } 
    } 
} 

誰能提供一個解釋,爲什麼?是的,我確實有「自動構建」標誌,並且正在調試模式下運行。

+0

來到這裏。如何使用[DCEVM](https://dcevm.github.io/)? – KrishPrabakar 2015-03-02 11:25:35

回答

1

我不是100%確定上面的例子,但總的來說規則是你不能改變一個類的接口。例如,添加礦除去方法,改變方法簽名,添加/移除靜態字段等

1

相信爲了熱插拔的方法的源,其方法必須在調用堆棧。在第一個示例中,更改的方法被重複調用,而在第二個示例中,該方法被調用一次,然後才執行代碼循環。如果代碼在方法已經運行後發生變化,那麼該方法不會再次進入調用堆棧,並且無法獲取代碼更改。