找不到符号 - 方法错误

时间:2014-12-04 15:11:37

标签: java generics extends comparable

我正在努力学习泛型类和实现。

我正在尝试创建一个扩展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()方法是从一个现在不存在的对象调用的,但是它会被调用吗?

1 个答案:

答案 0 :(得分:5)

您应该声明这样的类:

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

compareTo()仅适用于实现Comparable

的类