tôi là chuyển đổi một ứng dụng để sử dụng Java 1.5 và đã tìm thấy các phương pháp sau đây:Tôi có thể chuyển đổi mã sau đây để sử dụng Generics?
/**
* Compare two Comparables, treat nulls as -infinity.
* @param o1
* @param o2
* @return -1 if o1<o2, 0 if o1==o2, 1 if o1>o2
*/
protected static int nullCompare(Comparable o1, Comparable o2) {
if (o1 == null) {
if (o2 == null) {
return 0;
} else {
return -1;
}
} else if (o2 == null) {
return 1;
} else {
return o1.compareTo(o2);
}
}
Lý tưởng nhất là tôi muốn thực hiện phương pháp này mất hai so sánh áp cùng loại, là nó có thể chuyển đổi này và làm thế nào ?
Tôi nghĩ sau đây sẽ làm các trick:
protected static <T extends Comparable> int nullCompare(T o1, T o2) {
nhưng nó đã thất bại trong việc thoát khỏi một cảnh báo trong IntelliJ "cuộc gọi không được kiểm soát để 'compareTo (T) là một thành viên của kiểu thô 'java .lang.Comparable" trên dòng:
return o1.compareTo(o2);
Aargh! Tôi không thể tin rằng tôi đã đóng cửa –
Việc này sẽ giúp mọi người đi đến. – jodonnell
Bạn có chắc T mở rộng so sánh là đúng không? Có vẻ như T mở rộng So sánh > sẽ chính xác hơn? –
cletus