通用类型的可比实现?

我当前正在实施自定义供应商,而该供应商需要实现可比对象。

由于我的课程实现了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);
    }
}
cb46124994 回答:通用类型的可比实现?

您可以要求T实现Comparable<T>

class CachedSupplier<T extends Comparable<T>>

现在,如果您仍然需要CachedSupplier本身来实现Comparable<T>(我不确定这样做),则可以使用T的{​​{1}}方法:

compareTo()

编辑:正如Andreas所说,如果您的class CachedSupplier<T extends Comparable<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); } } 必须实现CachedSupplier,则可能应该实现Comparable而不是Comparable<CachedSupplier<T>>

Comparable<T>
本文链接:https://www.f2er.com/3159712.html

大家都在问