Java通用接口'类型参数不在界限内'错误

时间:2017-11-08 17:27:03

标签: java generics interface generic-type-argument

我似乎遇到了通用接口的编译错误。目标是创建一个在我的测试类中使用的接口,定义域类和生成的DTO类的常用方法。我做了一些挖掘,到目前为止我找到的答案似乎都不适用于我想要做的事情。大多数答案要么回溯到这个:class not within type bounds,或者他们建议使用通配符,这不是一个选项。

当我尝试编译时,出现以下错误:

[uberCompile] BrandDto.java:10: error: type argument T#1 is not within bounds of type-variable T#2
[uberCompile] public class BrandDto<T extends SubCollectionDto> implements IBrand<T> {
[uberCompile]                                                                     
[uberCompile]   where T#1,T#2 are type-variables:
[uberCompile]     T#1 extends SubCollectionDto declared in class BrandDto
[uberCompile]     T#2 extends ISubCollection declared in interface IBrand

我的班级结构如下:

interface IBrand<T extends ISubCollection>

interface ISubCollection

class Brand<T extends SubCollection>
    extends Entity
    implements IBrand<T>

class SubCollection
    extends Entity
    implements ISubCollection

生成的DTO类看起来像:

class SubCollectionDto
    implements ISubCollection

class BrandDto<T extends SubCollectionDto>
    implements IBrand<T>

我真的绞尽脑汁试图理解我在这里做错了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我想我终于明白了。它实际上是一个与泛型无关的类路径问题。当我最初设置DTO课程时,他们就是在&#39; src&#39;目录。我后来将它们移动到另一个目录中,但显然旧文件夹从未被删除。因此,在查看旧目录时,eclipse正在查看当前正确的文件集。不知道为什么会导致我看到的错误消息,但它现在正在运行。