【发布时间】:2020-04-21 06:27:55
【问题描述】:
我定义类变量映射
private Map<Double, Integer> map = new TreeMap<>((o1, o2)->-o1.compareTo(o2));
但是当我不能在类方法中调用它的方法时
private void inOrder(BalancedBinaryTree.TreeNode root, double target, int k){
...
map.pollFirstEntry();
...
}
但是当我修复它时
private TreeMap<Double, Integer> map = new TreeMap<>((o1, o2)->-o1.compareTo(o2));
现在我可以调用TreeMap的方法了,这是为什么呢?为什么多态在这种情况下会丢失?
【问题讨论】:
-
你误解了多态性。它不允许您访问其父类型变量的特定子类型的方法;但是,除了允许父类型变量采用各种具体的子类对象外,这还意味着方法的行为(已经声明并可能在父类型或变量类型中实现)在运行时可能会根据用于创建的具体实现子类而变化对象。
-
谢谢,我想我明白我为什么错了
标签: java dictionary polymorphism treemap