在数组中存储多个类型时,创建类型为Object的Array或创建新类是更好的Java实践吗?

Gra*_*mey 0 java arrays performance

假设我有对象类型A,B和C.我想将它们存储在一个数组中.一种方法是这样的:

A a = new A();
B b = new B();
C c = new C();

Object[] array = {a, b, c};
Run Code Online (Sandbox Code Playgroud)

从设计角度来看,这不太理想,因为您现在需要知道数组[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);
Run Code Online (Sandbox Code Playgroud)

哪种方法更好?出于设计原因,我可以看到第二种方法的论点(尽管其他语言一直都在讨论这个问题).

从性能的角度来看,第一种方法的必要的向上/向下投影比重复创建新的D对象更昂贵,反之亦然?

JB *_*zet 5

Java是一种类型安全的OO语言.使用类和对象.所以你的第二个解决方案要好得多(除了我不明白为什么你需要一个1元素的D数组).

表现无关紧要.两者都可能同样快(对于第二种解决方案而言具有明显的优势),而且无论如何都不会出现性能问题.不要预先优化:它是所有邪恶的根源.