Может ли кто-нибудь объяснить мне, почему приведенный ниже код не работает:
public static void main(String[] args) throws IOException
{
Comparable<Integer> q = new Integer(4);
Comparable<Integer> o = new Integer(4);
// Problematic line
int j = o.compareTo(q);
if (j == -1)
System.out.println("yes");
else
System.out.println("no");
}
но этот работает:
public static void main(String[] args) throws IOException
{
Integer q = new Integer(4);
Integer o = new Integer(4);
// Problematic line
int j = o.compareTo(q);
if (j == -1)
System.out.println("yes");
else
System.out.println("no");
}
}
Другими словами, когда реализация интерфейса является взаимозаменяемой, а не созданием экземпляра обычного класса? Ошибка возникает, когда я использую метод compareTo(), который является частью интерфейса Comparable и реализуется всеми классами Wrapper, такими как Integers.
Так что я думаю, что Comparable<Integer> q = new Integer(4);
и Integer q = new Integer(4);
не должны иметь никакого значения. Кто-нибудь может объяснить?
Спасибо.
Comparable<Integer>
можно сравнить сInteger
, а не с другимComparable<Integer>
. - person Dawood ibn Kareem   schedule 04.01.2014