gpt4 book ai didi

java - 多个不同对象的二维数组

转载 作者:行者123 更新时间:2023-11-30 06:39:56 24 4
gpt4 key购买 nike

对于我的项目,我需要一个可以容纳多种不同对象类型的二维数组。 java 的问题是它不允许你这样做。您只能拥有特定对象类型的数组。

现在不要误会我的意思,但我做了一些研究,一个建议的解决方案是使用 Object 数组,因为 java 中的每个类默认情况下都会扩展对象类。例如:

Object[][] someArray = new Object[5][5];
someArray[1][2] = new Cat();
someArray[3][4] = new Dog();

这样做的问题是,作为父类(super class)的对象类无法访问扩展它的子类的方法和字段。因此,如果我的猫或狗类中有一个公共(public) eat() 方法,则 someArray 中的元素将无法访问该方法。

所以我现在已经走进了死胡同。任何帮助表示赞赏。提前致谢。

最佳答案

[请不要因为我回答自己的问题而评判我]

一种可能的解决方案是使用 2D ArrayList。 2D 数组的工作方式实际上是由 1D 数组组成的 1D 数组。

也许相同的概念可以应用于 ArrayList,它实际上可以存储任何对象类型,而不会出现可访问性问题。可以按如下方式创建 5x5 ArrayList:

ArrayList<ArrayList> someArray = new ArrayList<ArrayList>();
for(int x=0 ; x<5 ; x++)
{
someArray.add(new ArrayList());
for(int y=0 ; y<5 ; y++)
someArray.get(x).add(null);
}

并将 row 1 col 2 设置为 cat 对象:

someArray.get(1).set(2, new Cat());
someArray.get(3).set(4, new Dog());

所以 2D ArrayLists,虽然有点令人困惑,但可能会非常有效地解决这个问题。

关于java - 多个不同对象的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44535145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com