3
其目的是允許任何兩種類型的「匹配」,只要它們遵循一個接口。也就是說,如果一個U類是可匹配到V,它實現了以下接口「多級」泛型與子類化和接口
public interface Matchable<U, V>
,可與
public class Matcher<U extends Matchable<U, V>, V extends Matchable<V, U>>
匹配對於一個情況下,我想匹配有着非常相似的兩個班屬性,所以我創建了一個基本的父類爲他們繼承:
public abstract class MatchingPairItem<T> implements Matchable<? extends MatchingPairItem<T>, T>
public class ClassA extends MatchingPairItem<ClassB>
public class ClassB extends MatchingPairItem<ClassA>
但我明顯缺少與通用打字什麼的,接收多個錯誤,例如:
type argument ClassA is not within bounds of type-variable U
Matcher<ClassA, ClassB> matcher = new Matcher<ClassA, ClassB>();
^
where U,V are type-variables:
U extends Matchable<U,V> declared in class Matcher
V extends Matchable<V,U> declared in class Matcher
任何人都可以指向正確的方向嗎?