泛型(T extends Comparable<T>) 数组怎么定义啊

public class Array<T>{

private T[] arr;
    public Array(){
        arr = (T[]) new Object[10];
    }

}
这样执行可以 ,当T extends Comparable<T>时就出错
应该怎么定义啊

阅读 3.2k
1 个回答

===更新
不知道你是否是希望仿照实现一个ArrayList,我写了个及其简陋的,其中用Object[]数组来存储,取出时再转换成T

public class Array<T extends Comparable<T>> {
    
    private Object[] arr;
    public static void main(String[] args) {
        Array<A> arr = new Array<A>();
        arr.set(0, new A(24));
        arr.set(1, new A(25));
        System.out.println(arr.get(1));
    }
    public Array(){
        arr = new Object[10];
    }
    public void set(int index, T ele) {
        arr[index] = ele;
    }
    public T get(int index) {
        return (T) arr[index];
    }
}

class A implements Comparable<A>{
    private int age;
    public A(int age) {this.age = age;}
    public A() {}
    public int getAge() {
        return this.age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int compareTo(A a) {
        return this.age - a.getAge();
    }
    
}

ArrayList的源码中,它也是用Object数组来存储元素的:
transient Object[] elementData;

===原答案
Comparable是接口,应该用implements
另外,你上面的Array是个class吗还是?报了什么错?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题