什么"对象"在E [] temp =(E [])中的意思新对象[容量]

时间:2017-08-14 00:01:15

标签: java arrays eclipse object generics

我看看动态数组,我不确定是什么"对象"

的意思
protected void resize (int capacity) {

E[] temp = (E[]) new Object[capacity];
for (int k = 0; k < size; k++) {
    temp[k] = data[k];
    data = temp;
}

干杯!

5 个答案:

答案 0 :(得分:0)

它是其他所有来源的根对象: https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html

大多数IDE都可以让你点击并查看文件夹(即按住Ctrl键并点击对象,它将带你进入它的定义。)

正在创建一个新的对象数组,然后进行转换(这是蹩脚的)。

答案 1 :(得分:0)

Object是Java中所有类的根。在这种情况下,它只是用于为存储在该数组中的任何对象的引用分配内存。您可以在该数组中存储任何类型的Object,并在运行时将其转换为另一种类型,如(MyClass) temp[3];

答案 2 :(得分:0)

&#34;对象&#34;表示Object类。在java中,所有其他类都继承自Object类。所以,在这里你要声明一个任何java类型的数组。

答案 3 :(得分:0)

每个班级都有Object作为超类,即使你写了类似的东西:

class A {}

然后A隐式扩展Object。因此,我们可以使用Object类型的变量来存储任何类型:

Object x = new SomeClass();

然后在阅读时转换为我们需要的类型:

SomeClass someClass = (SomeClass) x;

现在,由于我们无法构造泛型数组,即我们不能new T[],唯一的解决方案是构造一个“通用”(可以包含任何类型)数组new Object[]然后投射到我们需要的类型。

答案 4 :(得分:-1)

由于所有对象都扩展了Object,这只是创建一个可以容纳任何内容的数组,因此我们逐个复制“数据”的所有内容,并且它们的类型无关紧要,因为每个项目肯定会扩展Object 。由于您无法实例化泛型类型(即。new E[]()),因此您必须使用可以实例化并转换为泛型的类型 - 我们可以实例化Object并安全地转换为E。