Java通用类型和对象类

谢伦德拉·帕特尔(Shailendra Patel)

我需要知道java泛型类型和Object类之间的区别。这是两个代码,都可以正常工作,我只需要知道它们之间的区别是什么:

程序1使用对象类:包a;

public class Generic {
    private Object[] datastore;
    private int size;
    private int pos;

    public Generic(int numEl) {
        size = numEl;
        pos = 0;
        datastore = new Object[size];
    }

    public void add(Object a){
        datastore[pos] = a;
        pos++;
    }

    public String toString(){
        String elements ="";
        for (int i=0; i<pos; i++) {
            elements += datastore[i] + " ";
        }

        return elements;
    }
}

程序2使用泛型类型:程序包a;

public class Generic<T> {
    private T[] datastore;
    private int size;
    private int pos;

    public Generic(int numEl){
        size = numEl;
        pos = 0;
        datastore = (T[]) new Object[size];
    }

    public void add(T a) {
        datastore[pos] = a;
        pos++;
    }

    public String toString(){
        String elements ="";
        for (int i=0; i<pos; i++) {
            elements += datastore[i] + " ";
        }

        return elements;
    }
}
阿妮克特·塔库(Aniket Thakur)

Genercis是compile时间概念,以确保type safetyruntime

private T[] datastore;

将被解释为

private Object[] datastore;

所以你可以说

Generic generic = new Generic(2);
generic.add("test"); //allowed

但是你不能说

Generic<Integer> generic = new Generic<Integer>(2);
generic.add("test");  // compiler error

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章