假设我有 A、B 和 C 类型的对象。我想将它们存储在一个数组中。一种方法是这样的:
A a = new A();
B b = new B();
C c = new C();
Object[] array = {a, b, c};
从设计的角度来看,这不太理想,因为您现在需要知道 array[0] 属于 A 类型,但与 Ruby 或 Python 等允许这种类型的语言不同。
也就是说,另一种选择是创建一个自定义类 D 来保存该信息:
private class D {
public A myA;
public B myB;
public C myC;
public D(A a, B b, C c) {
//...
}
}
D[] otherArray = new D[1];
otherArray[0] = new D(a, b, c);
哪种方法更好?出于设计原因,我可以看到第二种方法的论据(尽管同样,其他语言一直在处理这个问题)。
从性能的角度来看,第一种方法的必要向上转换/向下转换是否比重复创建新的 D 对象更昂贵,反之亦然?