【问题标题】:Does Array create a new Object of the added Class?Array 是否创建添加的类的新对象?
【发布时间】:2015-07-27 03:42:04
【问题描述】:

我想将同一实例中的不同类(例如:Dog、Cat、Mouse)添加到一个数组(例如:数组动物)中。

示例代码:

Array<Animal> animals = new Array<>();
Cat cat = new Cat();
Dog dog = new Dog();

animals.add(cat);
animals.add(dog);

是否:animals = new Array&lt;&gt;() 创建新的 Dog、Cat.. 等对象?

因为我不想要同一个类的两个对象,只是一个引用的数组
这些类

【问题讨论】:

  • 不,它创建了一个数组(不管是什么,那是你的一个类吗?)
  • 数组只能有一种类型的对象。如果DogCat等是animal的子类,那么你可以有一个Animal对象数组。
  • 是的,我自己的课。
  • 既然Array是你自己的类,我们怎么能希望告诉你它做什么或不做什么?
  • 如果Array 是你自己的类,而你没有向我们展示源代码,那么你是唯一可以回答你自己问题的人......我们不知道是什么你的类 Array 的构造函数确实如此,所以我们无法判断它是创建 Dog 还是 Cat 对象。

标签: java arrays


【解决方案1】:

什么是“Array&lt;Animal&gt;”?在 java 中,它可以是Animal[] 或类似List&lt;Animal&gt; 的东西。在这两种情况下,都不会创建 Animal 对象,只是稍后存储它们。

【讨论】:

  • List接口是否兼容libGDX?
【解决方案2】:

此答案假定 Array&lt;T&gt; 是一个简单的数组,其功能类似于标准集合类型。

不,它只是分配一块内存,您可以在创建对象后将其指向它们。

Array<Animal> animals = new Array<>();

会为你找到一块内存。当你这样做时:

Cat cat = new Cat();

您将创建一个指向对象cat 的指针。当你这样做时:

animals.add(cat);

你将把指针放在数组分配的内存块的第一个位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    相关资源
    最近更新 更多