Java:绑定不匹配错误

时间:2013-02-24 15:23:20

标签: java

我正在学习Java,我必须创建一个程序来实现由教师定义的接口以实现ADT(使用ArrayList)。我得到的错误是我不明白的,也许新的解释可以帮助我。

界面:

public interface A<T extends C> { ... }

错误的类签名:

public class AImpl<T> implements A<T> { /*Bound mismatch error*/ ... }

JUnit测试类

//Declaration
A<Alphabet> alphaList;

//in setUp()
alphaList = new AImpl<Alphabet>;

// in one method
alphaList.size();  /* The method size() is undefined for the type A<Alphabet> */

请注意,Alphabet也是由老师给出的,并且有签名:

public class Alphabet implements C { ... }

有人可以通过一些解释帮助指出我的错误在哪里吗?

问候。

2 个答案:

答案 0 :(得分:5)

这里的问题是接口(T)中的Type绑定扩展C,因此你说它必须从C继承。在给出实现的类中,你没有指定Type的任何边界参数T.关键是第一个例子中的T与第二个例子中的T不同,因此你必须再次指定边界。以下代码应解决您的边界问题。

接口:

public interface A<T extends C> { ... }

Implemtation:

public class AImpl<T extends C> implements A<T> { /*Bound mismatch error*/ ... }

答案 1 :(得分:2)

为避免此问题,请确保AImpl声明,该泛型类型会扩展C

public class AImpl<T extends C> implements A<T> { }