Tôi đang làm việc với Java về muộn và đã tự hỏi liệu có bất kỳ loại dẫn xuất thực hiện giao diện nào trong Java hay không. Ngôn ngữ lập trình ưa thích của tôi là Haskell, theo nhiều cách đối lập với Java, nhưng một tính năng mà tôi đã tự hỏi liệu Java có bất kỳ thứ gì giống như khả năng lấy ra các triển khai giao diện của các loại hợp chất từ việc triển khai giao diện các tham số của chúng hay không. Ví dụ, trong Haskell:Dẫn xuất giao diện trong Java
data Pair k v = Pair k v
instance (Ord k) => Ord (Pair k v) where
compare (Pair x _) (Pair x' _) = compare x x'
này cho phép bạn đặt một Pair
nếu tham số đầu tiên của nó có thể được đặt hàng, mà không đòi hỏi một cách rõ ràng rằng phải là trường hợp. Tuy nhiên, gần nhất tôi có thể đến điều này trong Java là thông qua yêu cầu rõ ràng:
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);
}
}
Nếu không có một cách để rời khỏi so sánh thể suy đoán, nó là không thể cho tôi để thực hiện một BST của cặp mà không đảm bảo rằng tất cả các cặp có một phần tử đầu tiên có thể so sánh, vì vậy tôi không thể triển khai bất kỳ loại Bản đồ nào mà yếu tố đầu tiên không được yêu cầu rõ ràng là Có thể so sánh được. Có cách nào xung quanh điều này, ngoài việc tạo ra một phương thức của lớp BST của tôi cố gắng so sánh kiểu generic bằng cách đúc nó trước tiên như có thể so sánh, và sau đó là một Cặp với khóa so sánh, so sánh bất cứ khi nào có thể so sánh được?
cùng một câu hỏi? http://stackoverflow.com/questions/32789437/constrained-interface-implementation – ZhongYu
cảm ơn vì đã liên kết tôi với điều này. có vẻ như quan sát này là phổ biến trong số những người đến Java với một số kinh nghiệm FP. – archaephyrryx