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();
}
}