我看看动态数组,我不确定是什么"对象"
的意思protected void resize (int capacity) {
E[] temp = (E[]) new Object[capacity];
for (int k = 0; k < size; k++) {
temp[k] = data[k];
data = temp;
}
干杯!
答案 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。