泛型类型的java可比实现?
我目前正在实施一个定制供应商,该供应商需要实施一个可比较的标准
因为我的类实现了Comparable,所以我必须自己实现compareTo()。但是,作为泛型类型,如何比较这些值?因为它们几乎可以是任何东西
class CachedSupplier<T> implements Comparable<T>{
private Supplier<? extends T> supplier;
private T value;
boolean isAvailable;
public CachedSupplier(Supplier<? extends T> supplier) {
this.supplier = supplier;
}
public T get() {
if (!isAvailable) {
value = supplier.get();
isAvailable = true;
}
return value;
}
public int compareTo(T o) {
return get().compareTo(o);
}
}
# 1 楼答案
您可以要求
T
实现Comparable<T>
:现在,如果仍然需要
CachedSupplier
本身来实现Comparable<T>
(我不确定您是否需要),可以使用T
的compareTo()
方法:编辑:正如Andreas评论的那样,如果你的
CachedSupplier
必须实现Comparable
,那么它可能应该实现Comparable<CachedSupplier<T>>
而不是Comparable<T>
: