Java实现动态数组的时候发现的关于Object的问题

class MutableArrayList<Object>{
    private Object[] elementDate;
    private int size;
    public MutableArrayList(int n){
        elementDate=(Object[])new object[n];
        size=0;
    }
}
//报错:Cannot resolve symbol 'object'

但是这样写就没问题,是为什么啊

class MutableArrayList<object>{
    private object[] elementDate;
    private int size;
    public MutableArrayList(int n){
        elementDate=(object[])new Object[n];
        size=0;
    }
}

第一种写法,表示Object类
第5行的 new 后面的object 的首字母要大写,代表Object类

后面的写法,是使用了泛型,object代表是任何类型,第5行是Object数组转为泛型对应的数组
把object改为T,是不是眼熟了些

class MutableArrayList<T>{
    private T[] elementDate;
    private int size;
    public MutableArrayList(int n){
        elementDate=(T[])new Object[n];
        size=0;
    }
}

object是类,是大写字母开头,改为Object

img

img

第一个代码:是一个泛型(泛型可以随便起名字,这里你把泛型定义为Object),new object[n];中object这个类没有定义,所以会有那个报错。如果你把new object[n];改为new Object[n];会报类型参数不能直接实例化对象。

img


第二个代码:你泛型定义的是,你new的是Object对象,所以没问题

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632