小编Phy*_*ess的帖子

使用没有类型的 Java 泛型 - 泛型擦除?

看看这个方法:

public class Outer<E> {
    public static class Inner{
        public E value;
        public Inner(E value){
            this.value = value;
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

我们将使用以下代码使用它:

Outer.Inner i = new Outer.Inner(5);
System.out.println(i.value);
Run Code Online (Sandbox Code Playgroud)

这个东西不会编译,因为在内部方法中使用了 E。

我的问题是 - 我知道在编译时所有泛型都被删除并替换为 Object。那么为什么这里不是这种情况呢?E 将被 Object 替换,这整个事情应该编译。

这是否意味着我们永远不能使用没有类型的泛型类?(我知道这是不好的做法,但我认为这应该有效)

谢谢。

java generics

3
推荐指数
1
解决办法
54
查看次数

标签 统计

generics ×1

java ×1