2011-10-19 21 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