正確的設計取決於你把一個或d從類型對象後,你會做什麼ArrayList
。
如果您對不同的A和D對象做了完全不同的事情,那麼即使它們具有公共字段,也沒有功能重疊。你仍然可以做
private ArrayList<Object> mEntity = new ArrayList<>();
但是,有一點幫助,如果你將處理對象像
for (int i=0 ; i < mEntity.size() ; i ++=) {
Object obj = mEntity.get(i);
if (obj instanceOf A) {
// Do Something
} else if (obj instanceOf D) {
// Do other things
}
}
取而代之的是,你可以很容易地使用兩個ArrayList
對象。
但是,如果您在A和D中具有一些通用功能,並且您將通過此功能使用該對象,則可以將此通用功能封裝到接口中。
假設你會處理的對象,如
for (int i=0 ; i < mEntity.size() ; i ++=) {
Object obj = mEntity.get(i);
if (obj instanceOf A) {
A objA = (A) obj);
objA.workerMethod();
} else if (obj instanceOf D) {
D objD = (D) obj;
objD.workerMethod();
}
}
然後,如果沒有共同的方法,你可以定義一個接口,並使用多態
public interface CommonFunc {
void workerMethod();
}
private ArrayList<CommonFunc> mEntity = new ArrayList<>();
for (int i=0 ; i < mEntity.size() ; i ++=) {
CommonFunc obj = mEntity.get(i);
obj.workerMethod();
}
你甚至可以做到這一點,但它仍然有意義不大。
如果您需要知道「A」類型和「D」類型是什麼,請保留2個列表。 –
是否存在A和D的父類型,如果是soo,則使用該類型而不是Object。還有什麼特別的原因,你不能保持2 arraylists? – zerocool
類A和D是否繼承相同的類? –