首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javap和泛型类型擦除

javap和泛型类型擦除
EN

Stack Overflow用户
提问于 2013-04-09 17:40:32
回答 1查看 828关注 0票数 10

我正在阅读Herbert关于java中泛型中类型擦除的内容。据推测,在类上运行javap应该会在类型擦除之后提供有关公共、包保护和受保护字段和方法的字节码信息。然而,我写了以下课程:

代码语言:javascript
复制
    class Ambiguity<T, V extends String>{
    T ob1;
    V ob2;

    void set(T o){
        ob1 = o;
    }

    void set(V o){
        ob2 = o;
    }
}

并在生成的类文件上运行javap,并获得以下输出

从"Test.java“编译

代码语言:javascript
复制
class Ambiguity<T, V extends java.lang.String> {
  T ob1;
  V ob2;
  Ambiguity();
  void set(T);
  void set(V);
}

根据我所读到的,我期望得到这样的输出。

代码语言:javascript
复制
Compiled from "Test.java"
class Ambiguity<java.lang.Object, java.lang.String> {
  java.lang.Object ob1;
  java.lang.String ob2;
  Ambiguity();
  void set(java.lang.Object);
  void set(java.lang.String);
}

我是不是漏掉了什么?我想补充一点,我明白以上述方式过载方法并不是一个好做法。我只是想在这种模棱两可的情况下看到javap的结果。

编辑:--这似乎是javap中新修复的结果。id=4870651

如果我从JDK1.6运行javap,就会得到我所期望的结果。如果我从JDK1.7 b30运行javap --这是我最初使用的--我将得到泛型信息的结果。

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 15:11:37

我没有把握。但是signature属性似乎是在jvm 7 (参见jvm规范)中引入的。

此属性将捕获用于调试和反射api的签名信息。

要查看signature属性,请使用javap -v <class>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15908771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档