抽象类

时间:2016-07-06 10:16:33

标签: java

我有这个我要继承的抽象类:

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
}

但它看起来似乎并没有这样做,我很难找到解决这类问题的方法。

2 个答案:

答案 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
}