【问题标题】:generics code - compilation error on jdk5, compiles fine on jdk6泛型代码 - jdk5 上的编译错误,在 jdk6 上编译正常
【发布时间】:2013-10-26 09:18:21
【问题描述】:
Map<Class<? extends Entity<?>>, EntityDAO<? extends Entity<?>>> dataAccessMap;

用于将实体类的键->值存储到为这些实体类提供CRUD的DAO实现中。

public <T extends Entity<T>> EntityDAO<T> thatSupports(Class<T> entityClass) {
        if(dataAccessMap.containsKey(entityClass)) {
            return (EntityDAO<T>) dataAccessMap.get(entityClass);
        }
        throw new UnsupportedOperationException();
    }

这是一个查找 API,用于通过实体类获取 DAO 实现实例。

在 JDK 1.5 (jdk1.5.0_22) 上,代码无法编译。

Compilation failure inconvertible types
found   : EntityDAO<capture of ? extends Entity<?>>
required: EntityDAO<T>

但是代码在 JDK 6 (1.6.45) 上编译和执行良好

有没有一种方法可以让我在 JDK 1.5 上以不同的方式进行编译。该方法肯定必须返回一个 EntityDAO

【问题讨论】:

  • 为什么要使用旧的 jdk。 java 8 现已推出
  • @javaBeginner,Java 8 还没有发布。它仍处于 Beta 版本。发布时间为 2014 年 3 月
  • @AbhijithNagarajan 我应该说是测试版

标签: java generics compilation


【解决方案1】:

它对我来说很好用。请在下面找到屏幕截图

【讨论】:

  • 您使用的是哪个版本的 JDK?是JDK 1.5.22
  • 版本为1.5.0_22-b03
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多