2014-12-04 96 views
1

我在学习泛型类和实现方面苦苦挣扎。我想创建一个扩展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类时,它返回一个错误,说“无法识别symbol - method compareTo(E)”。我知道那是因为“element”实际上并不是一个要调用的对象,它的意思是通用的,有没有办法告诉编译器compareTo()方法是从一个不存在的对象中调用的,但是当它被调用时会调用它吗?

+0

相关类:http://stackoverflow.com/questions/4031572/sorted-array-list-in-java – aioobe 2014-12-04 15:15:52

回答

5

你应该声明类像这样:

public class SortedArrayList<E extends Comparable> extends ArrayList<E> 

compareTo()仅适用于它实现Comparable

+3

这样? comoareTo()? – 2014-12-04 15:16:15

+0

'this'&'compareTo'! – 2014-12-04 15:17:05

+0

我一直在试图解决这个问题2天。这种容易解决的缓解和烦恼的混合是一种奇怪的感觉。谢谢。 – Finlay 2014-12-04 15:17:28