【发布时间】:2019-02-21 14:14:55
【问题描述】:
如何在 java 中使用一个函数创建一个接口,该函数接受扩展接口类型的参数?
以接口ISelfComparable为例
如果 A 类扩展它,那么我希望它能够实现
bool compareTo(A other)
但如果 B 类扩展它,那么我希望它能够实现
bool compareTo(B other)
我知道我可以使用通用接口,但它似乎不正确,因为 A 扩展 ISelfComparable 没有任何意义
如果这是不可能的,在这种情况下最好的做法是什么?
【问题讨论】:
-
这仍然允许 A 扩展 ISelfComparable 如果 B 也是自我可比的,或者我不明白你。
-
“我知道我可以使用通用接口,但它似乎不正确,因为 A 扩展 ISelfComparable 没有任何意义” .... 什么? A 将是
class A implements ISelfComparable<A>,B 将是class B implements ISelfComparable<B>...你从哪里得到 A 通过 B?还是你想阻止 A 超越 B?那你应该这么说。 -
因为理论上 A 可以扩展 ISelfComparable
-
据我所知,这种情况没有可靠的解决方案,因此需要运行时检查才能完全确定。
-
例如,您可以在
foo方法中尝试System.out.println("this: " + this.getClass().getSimpleName() + " --> other: " + other.getClass().getSimpleName());,看看如何从那里开始。