gpt4 book ai didi

Java - 一般处理子类的创建

转载 作者:行者123 更新时间:2023-12-01 15:43:36 24 4
gpt4 key购买 nike

我有三个非常相似的类,除了一个方法。因此,我选择将它们的其余功能放入抽象父类(super class)中。然而,当谈到创建这些类的实例时,我不知道如何实现在我看来“显而易见”或“优雅”的方法。它们的构造函数本质上是相同的,并且我需要每个构造函数的多个实例,因此我想做如下操作:

private SubclassA[] subclassA_array, SubclassB[] subclassB_array, SubclassC[] subclassC_array;
subclassA_array = new SubclassA[getNumInstancesOfClassANeeded()]
subclassB_array = new SubclassA[getNumInstancesOfClassBNeeded()]
subclassC_array = new SubclassA[getNumInstancesOfClassCNeeded()]

// might have my syntax wrong here; array of the three subclass arrays
private Superclass[][] superArray = new Superclass[][3];
superArray[0] = subclassA_array;
superArray[1] = subclassA_array;
superArray[2] = subclassA_array;
for ( Superclass[] array: superArray )
for(int i = 0; i< array.length; i++)
// array[i] = new..... what goes here?
}
}

我如何找到合适的类来在最内层循环中构造?这实际上是一种非常奇怪的解决问题的方法吗?我错过了一些更明显的事情吗?我应该说“见鬼去吧!”并且只有三个独立的循环?

最佳答案

Should I just say "to hell with it!" and just have three separate loops?

在我看来,是的。

<小时/>

您可以执行以下操作:

  1. 使用array.getClass()获取数组的类,
  2. 使用getConmponentType()获取数组的基本类型
  3. 使用newInstance()创建实例
  4. 将实例引用分配给数组。

...但这会导致代码脆弱,就像用大锤敲碎核桃一样。

关于Java - 一般处理子类的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7579895/

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