我有一个带有泛型参数的接口:
package com.lbv.itf;
public interface Segment<T extends Object> {...}
这是几年前编写的,在1.6中编译并内置到jar中,比如segment.jar
现在,我有一个使用segment.jar的新项目,在这个新项目中,我有一个实现此接口的类:
package com.lbv.impl;
import com.lbv.itf.Segment;
public class TreeSegment implements Segment<Tree> {...}
在1.7中编译这个较新的类会出现此错误:
键入com.lbv.itf.Segment不接受参数
看起来很明显,Segment接口接受参数但不知何故,在编译较新的类时不可见。这是一个已知的JDK兼容性问题还是我缺少的东西?任何帮助都会有很大的帮助。
更新 它只适用于我编译较新的代码1.6 :(。在泛型类型参数上是否存在从1.6到1.7的兼容性问题?
我正在使用
Java 1.6 Update 45 64位
和
Java 1.7 Update 60 64位
答案 0 :(得分:1)
这种情况已经发生,因为遗留代码是使用选项`
编译的'目标= jsr14'
`它剥离了类型参数,以便生成的代码与旧的Java版本保持兼容。不幸的是,1.7已经停止支持这个标志,导致这个问题引起了我的注意。