反编译后还有泛型信息

youyou200609 2016-01-11 02:17:26
java编译时擦除泛型,反编译后应该没有泛型信息,怎么解释下反编译后还保留泛型信息的例子
反编译后声明的变量Map<String, Object> map没有擦除
还有方法返回类型没有擦除
源程序
public class MyMain {
Map<String, Object> map = new HashMap<String, Object>();

public static void main(String[] args) {
System.out.println("fdsaaaaaa");
}

public List<String> method(List<String> ls) {
System.out.println("List<String>");
return null;
}

private String abc() {
List<String> ls = new ArrayList<>();
ls.add("333");
return "fsda";
}
}

反编译后:
public class MyMain
{
Map<String, Object> map = new HashMap();

public static void main(String[] args) {
System.out.println("fdsaaaaaa");
}

public List<String> method(List<String> ls) {
System.out.println("List<String>");
return null;
}

private String abc() {
List ls = new ArrayList();
ls.add("333");
return "fsda";
}
}
...全文
282 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
danceflash 2016-01-20
  • 打赏
  • 举报
回复
我觉得反编译软件可能会根据分析将泛型定义补充回来。 想知道泛型类型有没有被擦除,要看编译成的byte code中有没有泛型定义,而不是看反编译的结果,毕竟反编译的结果里面包含了大量反编译工具分析的结果。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧