通用类型不在子类中

时间:2017-12-04 03:22:46

标签: java generics

interface Node<T extends Number> {
    default public T getData() {
        return (T) Integer.valueOf(1);
    }
}

class MyNode<T extends Integer> implements Node<T> {
}

class FinalNode extends MyNode{
    public static void main(String[] args) {
        MyNode mn = new MyNode();
        mn.getData();
    }
}

这段代码只是我在庞大的代码库中遇到的问题的简化。我提取它以便更容易关注问题而不是业务逻辑:)。

当我编写代码时,我的IDE报告给我mn.getData()返回Number类型。但mn是类MyNode的实例,其类型为“Integer”。所以我希望mn.getData()应该返回类型为“Integer”的结果。看起来泛型类型绑定不适用于继承。谁能给我一些线索?

修改代码。它也是原始类型吗?

 class MyNode implements Node<Integer> {
    }

    class FinalNode extends MyNode{
        public static void main(String[] args) {
            MyNode mn = new MyNode();
            mn.getData();
        }
    }

0 个答案:

没有答案