【发布时间】:2021-04-28 04:25:30
【问题描述】:
我正在考虑提出一个添加默认方法的功能请求:
default boolean greaterThan(T o) {
return compareTo(o) > 0;
}
default boolean smallerThan(T o) {
return compareTo(o) < 0;
}
default boolean atLeast(T o) {
return compareTo(o) >= 0;
}
default boolean atMost(T o) {
return compareTo(o) <= 0;
}
到Comparable 接口,因为它会使代码更具可读性 - 在我看来。
但是,我想知道这是否会破坏代码。如果我们添加默认方法,是否有任何代码(如 Lambda)会中断?
如果我正确阅读了this,我会假设 Lambda 至少会继续工作,只要他们不会尝试调用新方法,但我不确定。而且我不知道是否可能存在任何(明显的)其他问题。
请不要讨论可能的功能请求本身。
【问题讨论】:
-
谢谢大家,都阅读了。这是有道理的,它可能会导致问题,但我也不认为它们非常危险。在源代码级别引起命名冲突一定是一种非常奇怪的方法,但是是的,你永远不知道。
-
@Slaw 为什么不回答这个问题?恕我直言,再加上一个例子,直接回答了。
-
@Eugene 不确定我是否理解得足够透彻,无法给出答案。
标签: java comparable default-method