Ultimamente sto lavorando con Java e mi chiedevo se esistesse alcun tipo di derivazione di implementazione dell'interfaccia in Java. Il mio linguaggio di programmazione preferito è Haskell, che per molti versi è antitetico a Java, ma una caratteristica che mi chiedevo se Java avesse qualcosa di simile è la capacità di derivare implementazioni di interfaccia di tipi composti dalle implementazioni dell'interfaccia dei loro parametri. Ad esempio, in Haskell:Derivazione dell'interfaccia in Java
data Pair k v = Pair k v
instance (Ord k) => Ord (Pair k v) where
compare (Pair x _) (Pair x' _) = compare x x'
Questo consente di ordinare un Pair
se primo parametro può essere ordinato, senza richiedere esplicitamente che essere il caso. Tuttavia, il più vicino posso venire a questo in Java è attraverso requisito esplicito:
class Pair<K extends Comparable<K>, V> extends Comparable<Pair<K,V>> {
K k;
V v;
public int compareTo(Pair<K,V> p) {
return k.compareTo(p.k);
}
}
Senza un modo di lasciare la comparabilità può dedurre, è impossibile per me implementare un BST di coppie senza garantire che tutte le coppie avere un primo elemento paragonabile, quindi non posso implementare nessun tipo di mappa in cui il primo elemento non sia esplicitamente richiesto per essere comparabile. Esiste un modo per aggirare questo, oltre a creare un metodo della mia classe BST che tenta di confrontare il tipo generico col primo come paragonabile, e poi come una coppia con una chiave paragonabile, confrontando ogni volta che la comparabilità è possibile?
stessa domanda? http://stackoverflow.com/questions/32789437/constrained-interface-implementation – ZhongYu
grazie per avermi collegato a questo. sembra che questa osservazione sia comune tra le persone che arrivano a Java con alcune esperienze FP. – archaephyrryx