受约束的接口实现
在 Haskell(和 Rust 等)中,我可以拥有受其他实例约束的实例:
data Pair a b = Pair a b
instance (Eq a, Eq b) => Eq (Pair a b) where
Pair a b == Pair a' b' = a == a' && b == b'
使用Java接口,我不能。我必须要求 的类型参数总是实现,否则我根本无法实现:Pair
Eq
Eq<Pair<A, B>>
interface Eq<A> {
public boolean eq(A other);
}
class Pair<A extends Eq<A>, B extends Eq<B>> implements Eq<Pair<A, B>> {
A a;
B b;
public boolean eq(Pair<A, B> other){
return a.eq(other.a) && b.eq(other.b);
}
}
我想有这样的东西:
class Pair<A, B> implements Eq<Pair<A, B>> if (A implements Eq<A> && B implements Eq<B>) {...}
到目前为止,互联网告诉我,Java并不直接支持我想要的功能。尽管如此,我发现这是接口(可重用)可用性的一个相当关键的因素。我想知道是否有大约涵盖相同领域的解决方法或解决方案。