スーパークラスとしてパラメータといじるサブクラスを取る方法

LonelyBishop:

私は2つのクラス「BC」と「BD」の2つのオブジェクトのArrayListを持つクラス「A」を持っています。BCとBDは抽象クラス「B」から継承します。

それでは、私が行うのに苦労しています、私は()、単一のアドオンを作りたい、です。パラメータは、BDタイプである場合、パラメータとしてBオブジェクトを取得し、パラメータがBC型の場合BCオブジェクト追加、及びBDを追加する方法は、オブジェクト。これを実行したり、私は別々の追加方法を確認する必要があり、正しい方法はありますか?

   public class A
   {
        private ArrayList<BC> bcArrayList= new ArrayList<>();
        private ArrayList<BD> bcArrayList= new ArrayList<>();

        public void add(ArrayList<B> bArrayList)
        {
            //m = create new object of type, either BC or BD;
            bArrayList.add(m);
        }
   }
ヨアキムダニエルソン:

私はあなたがリストから複数のオブジェクトを追加したい場合は、その後1つの取る方法があることを考えるList<B>と使用をinstanceof

public void add(List<B> bList) {
    for (B b : bList) {
        if (b instanceof BC) {
            bcArrayList.add((BC)b);
        }
        if (b instanceof BD) {
            bdArrayList.add((BD)b);
        }
    }         
}

しかし、単一のオブジェクトを追加するために、私はそれを行うにはクリーンな方法をメソッドのオーバーロードを使用していると思います

public void add(BC b) {
    bcArrayList.add(b);
}

public void add(BD b) {
    bdArrayList.add(b);
}

もちろん、すべてのあなたのクラスに追加することができ、このようにそれらを使用します

A a = new A();
a.add(new BC());
a.add(new BD());
List<B> list = new ArrayList<>();
list.add(new BC());
list.add(new BD());
a.add(list);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=18864&siteId=1