gpt4 book ai didi

java - 为什么定义协变 compareTo 方法被认为是不好的做法?

转载 作者:IT老高 更新时间:2023-10-28 20:53:09 24 4
gpt4 key购买 nike

这是我的代码中的一个示例:

基类:

abstract class AbstractBase implements Comparable<AbstractBase> {
private int a;
private int b;

public int compareTo(AbstractBase other) {
// compare using a and b
}
}

实现:

class Impl extends AbstractBase {
private int c;

public int compareTo(Impl other) {
// compare using a, b and c with c having higher impact than b in AbstractBase
}

FindBugs 将此报告为一个问题。但这是为什么呢?会发生什么?

我将如何正确实现解决方案?

最佳答案

Impl#compareTo(Impl) 没有覆盖 AbstractBase#compareTo(AbstractBase),因为它们没有相同的签名。换句话说,例如使用 Collections#sort 时不会调用它。

关于java - 为什么定义协变 compareTo 方法被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com