,我有以下的代碼:Java的TreeSet.add()不按照PECS原則問題(仿製藥)
public interface Segment<T> extends Period { ... };
public class SegmentImpl_v1<T> implements Segment<T> { ... };
public interface TimeLine<T, S extends Segment<T>> { ... };
public class TimeLineImpl<T, S extends Segment<T>>
implements TimeLine<T, S> {
private SortedSet<S> segments = new TreeSet<S>();
public void someFunction() {
// no suitable method for...
segments.add(new SegmentImpl_v1<T>(...));
}
}
,我得到一個no suitable method for...
添加細分實例時。 Java的treeset似乎不適用PECS原則。有沒有解決這個問題的方法?
SOLUTION
我實現:
public static <T> Segment<T> newItem(Period p, T itemValue) {
return new SegmentImpl_v1(p, itemValue);
}
在SegmentImpl_v1
並調用它someFunction()
。
但SegmentImpl_v1實施段和S延伸段,所以他們沒有共同段? –
JVerstry
當然,他們都可以安全地在'SortedSet>'中,但是不能保證v1可以安全地存在於一組v2中。如果您想使用v2獨有的方法,會發生什麼情況? –
Affe