2016-10-09 28 views
-3

我有一個名爲Main.java的程序,如下所示。編譯完這個程序後,會有兩個.class文件:Main.class和Main $ 1.class。我的問題是兩個.class文件完全一樣。新線程的類文件和主類文件是相同的

任何人都知道什麼是錯的?

我想在新線程的run()方法中檢測一些代碼,但是我無法在新線程的run()方法中找到代碼指令。

public class Main{ 
    public static void main(String...args){ 
     Thread t=new Thread(){ 
     @Override 
      public void run(){ 
      System.out.println("xxxx"); 
      } 
     }; 
    t.start(); 
    } 
} 
+4

我的錢是你沒有正確地比較兩個類文件。 –

+0

不知道你在問什麼。這兩個類文件是什麼意思是一樣的?他們不能。一個是針對外部公衆的主要類;另一個是內部的匿名課程。兩件完全不同的事情! – GhostCat

+0

請更詳細地解答您的問題。 – Blip

回答

3

我的錢會在你沒有正確比較兩個類文件。我敢打賭,你在你的bash類似的提示文字是這樣的:

md5sum Main.class Main$1.class 

(或大於md5sum其他一些校驗工具)

這實際上是替代字符串中稱爲1變量 - 除非你有定義的變量,該變量是空的,這樣就擴大到:

md5sum Main.class Main.class 

這將顯示爲相同的文件內容。

嘗試單引號第二個字符串:

md5sum Main.class 'Main$1.class' 
相關問題