擴展我的部門私有Libary我試圖實現一個isBetween方法。此方法是通用的,並且期望Comparable
類型爲T
的最小值,其最大值以及可變參數值。其目的是檢查是否所有值都在指定範圍內。指定方法參數的泛型類型
public static void main(String[] args) {
System.out.print(isBetween(1, 100, 200, 100, 1, 2));
}
@SafeVarargs
public static <T extends Comparable> boolean isBetween(T minimum, T maximum, T... values) {
for (T value : values) {
if (!(value.compareTo(minimum) >= 0 && value.compareTo(maximum) <= 0))
return false;
}
return true;
}
這工作得很好。但是類型T可以包含任何Comparable對象。方法調用:
System.out.print(isBetween(1, 100, 200, 100, "How awkward", 2));
也將在編譯時被接受。 這根本不是類型安全的,不能被接受。
兩種解決方案進入了我的腦海:
1.呼叫像下面
System.out.print(Class.<Integer>isBetween(1, 100, 200, 100, 1, 2));
2.方法使U
類型的我的方法的參數之一,擴展類型T
至類型U
這兩個「解決方案」似乎都不是很優雅。第一個需要在調用方法之前編寫額外的代碼,第二個代碼看起來像是黑客。
有沒有更優雅的方法來解決我的問題?
'>'? –
fge
偉大的這並沒有進入我的腦海,謝謝:) –