İlk sınır türünde bir parametre olduğunda ek sınır belirtmenin Java'da mümkün olmadığını biliyorum; ancak, kimsenin benzer bir şey yapmanın ve derleme zamanında güvenli tutmanın alternatif bir yolunu bilen var mı diye merak ediyordum. Aşağıda bir örnek verdim.İlk ciltleme tip parametresi olduğunda ek bir sınır belirtmenin alternatif bir yolu var mı?
Aşağıdaki kodda, atıfta bulunduğum şey şu şekildedir: <E extends T & Comparable<T>>
. Bu durumda, T
türünün karşılaştırılabilir olması durumunda, dahili karşılaştırıcıyı kullanmak istiyorum, aksi takdirde kendi karşılaştırıcımı belirtmek istiyorum.
Derleme zamanında tip güvenliğini korurken bunu yapmanın alternatif bir yolu var mı?
public class ExampleClass<T, U> {
[...]
public <E extends T & Comparable<T>> ExampleClass(Function<U, E> function) {
this.function = function;
this.comparator = (E a, E b) -> a.compareTo(b);
}
public ExampleClass(Function<U, T> function, Comparator<U> comparator) {
this.function = function;
this.comparator = comparator;
}
}
Comparator.naturalOrder(); 'ile güzel bir ipucu! –