我有一個像這樣的抽象類。
abstract class Some {
int rank;
}
現在我想定義一個靜態變數和/或比較rank.
static <T extends Some> Compartor<T> comparingRank() {
return Comparator.compartingInt(Some::getRank);
}
static final Compartor<Some> COMPARING_RANK
= Compartor.comparingInt(Some::getRank);
我的問題是...
- 我應該使用
<? super T>forcomparingRank()方法嗎? - 我應該
<? super T>用于COMPARING_RANK欄位嗎?
uj5u.com熱心網友回復:
我們通常不鼓勵在方法的回傳型別中使用通配符,因為這會使方法無法使用。因此,第一個選項因此被排除。
使用下限通配符的第二種變體? super T通常是一件好事,它使您的 API 更加靈活。但是,在這個特定的場景中,comparingInt宣告了通配符,讓你的變得多余。
static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor)
因此,在我看來,您可以保持原樣,無需任何修改。但是,您仍然可以在情況允許的情況下使用通配符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348573.html
上一篇:Rust-相同型別的不同行為
