public class arr<T>
{
class comp <T extends Comparable<T>> implements Comparator<T>
{
public int compare(T lObj,T rObj)
{
return lObj.compareTo(rObj);
}
}
ArrayList<T> list;
Comparator<T> comparator;
public arr()
{
list = new ArrayList<T>();
comparator = new comp();
}
public void add(T data)
{
list.add(data);
}
public int getLength()
{
return list.size();
}
public T get(int index)
{
return list.get(index);
}
public void sort()
{
list.sort(comparator);
}
}
Здравствуйте, я пытаюсь заставить работать функцию сортировки, но у меня проблема.В конструкторе arr , если я напишу
comparator = new comp<T>();
, это выдаст мне ошибку, говорящую
"type argument T#1 is not within bounds of type-variable T#2 comparator =
new comp<T>(); ^
where T#1,T#2 are type-variables:
T#1 extends Object declared in class arr
T#2 extends Comparable<T#2> declared in class arr.comp"
И если я выну тип и напишу вот так
comparator = new comp;
тогда это работает, но выдает мне предупреждение, которое гласит:
warning: [rawtypes] found raw type: arr.comp
comparator = new comp();
Я могу понять, что это значит для необработанных типов.Я не указываю тип, но каким-то образом это работает, и если я пытаюсь исправить предупреждение, указав тип, он выдает ошибку.Не могли бы вы помочь мне разобраться?Я знаю ... Я нуб, мой код, должно быть, боль в твоих глазах.Я играю с общими компараторами и пытаюсь многое узнать.Спасибо.