public static java.util.List getFoo(java.lang.String)
上述方法返回List<String>
,但javap
命令返回上述内容(它不显示List
的类型为String
)。有没有办法显示真实的类型?
答案 0 :(得分:4)
类型是谎言:)严重的是,这只是编译时间信息。当从集合中获取时,列表的条目被转换为字符串,字节码格式的列表本身就像任何标准的普通旧列表一样。
http://download.oracle.com/javase/tutorial/java/generics/erasure.html
答案 1 :(得分:1)
参数化对象的运行时类型总是被删除,所以没有。请参阅Type Erasure的Generics Trail中的Learning the Java Language Tutorial。
答案 2 :(得分:0)
您需要更改功能的签名
public static java.util.List<String> getFoo(java.lang.String).
答案 3 :(得分:0)
在这种情况下,javap对参数化类型String是盲目的。
我用一个类似的例子进行了测试。使用Linux命令 hexdump ,将显示参数化类型。