泛型代码 - jdk5上的编译错误,在jdk6上编译正常

时间:2013-10-26 09:18:22

标签: java generics compilation

Map<Class<? extends Entity<?>>, EntityDAO<? extends Entity<?>>> dataAccessMap;

用于存储密钥 - &gt;实体类的值,为提供这些实体类的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

1 个答案:

答案 0 :(得分:0)

对我来说很好。请在下面截图

JDK 1.5 JDK 1.6