2011-10-19 19 views
2

我試圖用「-g:vars」選項生成類文件。這對於類來說工作得很好,我得到了參數名稱,就像它在源代碼中一樣。但這似乎不適用於接口。未爲接口生成Java調試信息

例如接口 公共接口測試

{ 
    public abstract void doesntWork(String name, String last, int id); 
} 

=======生成==========

// (version 1.6 : 50.0, no super bit) 
public abstract interface Test { 

    // Method descriptor #4 (Ljava/lang/String;Ljava/lang/String;I)V 
    public abstract void doesntWork(java.lang.String arg0, java.lang.String arg1, int arg2); 
} 

而...

public class Test 
{ 
    public void doesntWork(String name, String last, int id) {} 
} 

== =========生成(僅顯示相關部分)============

public void doesntWork(java.lang.String name, java.lang.String last, int id); 
    0 return 
     Local variable table: 
     [pc: 0, pc: 1] local: this index: 0 type: Test 
     [pc: 0, pc: 1] local: name index: 1 type: java.lang.String 
     [pc: 0, pc: 1] local: last index: 2 type: java.lang.String 
     [pc: 0, pc: 1] local: id index: 3 type: int 

我猜這是由於局部變量表不適用於接口。 如何獲取調試信息,因爲它也是用於接口?

回答

-1

那麼,你會在哪裏看到界面的參數名稱?每一個實現類將提供自己的名字 - 存儲接口的名稱有什麼意義?

+0

要downvoter-care來解釋一下? – alf

+0

同意,但不應該在接口和類中「-g」調試行爲一致。當然,這些名字可以在執行類中被覆蓋。 表決需要15個重點。我可以通過任何機會了解downvoter嗎? – sErVerdevIL

+0

它不應該:沒有辦法使用這些名稱進行調試。因此,不需要存儲這些。這不是「*可以*被覆蓋」 - 它的「必須並將被覆蓋」 – alf