我有这个我要继承的抽象类:
public abstract class MyFirstClass<K extends Comparable<K>, V> implements Iterable<MySecondClass<K, V>>
{
// Abstract methods
}
我不确定如何编写扩展此抽象类的类的声明。我想到了类似的东西:
public class MyFirstClassImpl<K, V> extends MyFirstClass<Object, Object>
{
@Override
public Iterator iterator()
{
// Code
}
// Implementation of abstract methods from MyFirstClass
}
但它看起来似乎并没有这样做,我很难找到解决这类问题的方法。
答案 0 :(得分:2)
问题在于您的第一个参数化类型:Object
。
Object
未实现Comparable<Object>
,因此K extends Comparable<K>
的{{1}}参数化未验证Object
。
另请注意,您的K
覆盖也应进行参数化!
iterator
类的简单实现示例如下:
abstract
... public class MyFirstClassImpl<K, V> extends MyFirstClass<String, Object> {
@Override
public Iterator<MySecondClass<String, Object>> iterator() {
// TODO
return null;
}
}
实施String
。
答案 1 :(得分:0)
如果子类也应该是通用的,它应该具有与基类相同的泛型参数声明:
public class MyFirstClassImpl<K extends Comparable<K>, V> extends MyFirstClass<K,V>
{
@Override
public Iterator<MySecondClass<K, V>> iterator()
{
// Code
}
}
否则,您的子类根本不应具有任何泛型类型参数:
public class MyFirstClassImpl extends MyFirstClass<SomeClassThatImplementsComparable, Object>
{
@Override
public Iterator<MySecondClass<SomeClassThatImplementsComparable,Object>> iterator()
{
// Code
}
// Implementation of abstract methods from MyFirstClass
}