1 class test {
2 public static int compare0(Comparable x, Comparable y) {
3 return x.compareTo(y);
4 }
5 public static int compare1(Object x, Object y) {
6 return ((Comparable) x).compareTo((Comparable) y);
7 }
8 public static int compare2(Object x, Object y) {
9 Comparable p = (Comparable) x;
10 Comparable q = (Comparable) y;
11 return (p).compareTo(q);
12 }
13 public static void main(String[] args) {
14 Comparable zero = new Integer(0);
15 Comparable one = new Integer(1);
16 int c = (zero).compareTo(one);
17 }
18 }
При компиляции кода выше выдается 4 предупреждения:
% javac -Xlint:unchecked test.java
test.java:3: warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable
return x.compareTo(y);
^
test.java:7: warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable
return ((Comparable) x).compareTo((Comparable) y);
^
test.java:13: warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable
return (p).compareTo(q);
^
test.java:19: warning: [unchecked] unchecked call to compareTo(T) as a member of the raw type java.lang.Comparable
int c = (zero).compareTo(one);
^
4 warnings
Я перепробовал еще много вариантов, но предупреждения остались.Как правильно написать и вызвать метод test.compare выше?
Спасибо!
PS: test.compare - только пример;Мне не нужна такая функция;но мне нужно реализовать функцию, которая, как и test.compare, должна иметь в своей сигнатуре объекты, реализующие Comparable.
PS2: я программирую уже более 25 лет, я даже некоторое время программировал на Javaоколо 10 лет назад, но использование Java сейчас (требуется моей работой) приводит меня в бешенство.Для опытного программиста изучение Java гораздо сложнее, чем кажется.Существует так много вещей, связанных с изучением Java, 99% которых в лучшем случае устарели или имеют тенденцию оценивать новичков в программировании (т. Е. Очень многословны), а в худшем - просто мусор ... Мне еще предстоит найти ссылкуJava, которая позволит мне быстро обнулить ответ на вопрос выше.