我正在努力学习泛型类和实现。
我正在尝试创建一个扩展ArrayList的泛型类(我知道这是不好的做法,这只是我必须要做的事情)。我想使用类似的方法对arrayList中的条目进行排序(我不允许使用.sort()。这是扩展类:
import java.util.ArrayList;
import java.util.*;
/**
* extending to ArrayList
*/
public class SortedArrayList<E> extends ArrayList<E>
{
/**
* Constructing the super
*/
public SortedArrayList()
{
super();
}
public void insertAndSort (E element){
if (isEmpty()){
add(element);
}
for ( int i = 0; i < size(); i++){
E otherElement = get(i);
if(element.compareTo(otherElement) > 0){
add(i, element);
}
if(element.compareTo(otherElement) < 0) {
add(i+1, element);
}
}
}
}
我想在要排序的对象的类中实现compareTo方法,但是当我尝试编译SortedArrayList类时,它返回一个错误,说“无法识别符号 - 方法compareTo(E)”。我知道那是因为“元素”实际上不是一个要调用的对象,它意味着是通用的。有没有办法告诉编译器compareTo()方法是从一个现在不存在的对象调用的,但是它会被调用吗?
答案 0 :(得分:5)
您应该声明这样的类:
public class SortedArrayList<E extends Comparable> extends ArrayList<E>
compareTo()
仅适用于实现Comparable