java – 为什么这个类型参数保留在字节码中?

前端之家收集整理的这篇文章主要介绍了java – 为什么这个类型参数保留在字节码中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
type erasure page

Replace all type parameters in generic types with their bounds or Object if the type parameters are unbounded. The produced bytecode,therefore,contains only ordinary classes,interfaces,and methods.

但是,对于以下类:

public class Foo<E extends CharSequence> {
    public E something;
}

javap -c Foo打印:

public class Foo<E extends java.lang.CharSequence> {
  public E something;
}

为什么type参数没有被绑定(CharSequence)替换,而是保存为E?

解决方法

你打印的不是字节码.这是方法签名.它放在那里,因此编译器可以在编译调用它的其他类时强制执行类型安全.
原文链接:https://www.f2er.com/java/130123.html

猜你在找的Java相关文章