相关疑难解决方法(0)

什么是Reified Generics?他们如何解决类型擦除问题以及为什么不能在没有重大变化的情况下添加它们?

我已经阅读过Neal Gafter关于这个主题博客,但我仍然不清楚其中的一些观点.

为什么在给定Java的当前状态,JVM和现有集合API的情况下,不可能创建保留类型信息的Collections API的实现?难道这些不能以保留向后兼容性的方式替换未来Java版本中的现有实现吗?

举个例子:

List<T> list = REIList<T>(T.Class);
Run Code Online (Sandbox Code Playgroud)

REIList是这样的:

public REIList<T>() implements List {
  private Object o;
  private Class klass;

  public REIList(Object o) {
    this.o = o;
    klass = o.getClass();
  }
... the rest of the list implementation ...
Run Code Online (Sandbox Code Playgroud)

并且这些方法使用Object o和Class klass来获取类型信息.

为什么保留泛型类信息需要语言更改而不仅仅是JVM实现更改?

我不明白的是什么?

java generics collections jvm reification

68
推荐指数
3
解决办法
3万
查看次数

标签 统计

collections ×1

generics ×1

java ×1

jvm ×1

reification ×1