2016-11-09 17 views
0

のは、我々は、以下の2つのclass種類があるとしましょう:私はdrink.getClass()を呼び出すことによってdrinkのクラスを確認することができます。もちろん、JAVA:Object-wrappedインスタンスで特定のクラスタイプにArrayListを初期化するにはどうすればよいですか?

public Object getDrink(boolean random){ 
    if(random) 
     return new Cola(); 
    else 
     return new Milk(); 
} 
Object drink = getDrink(random); 


class Cola {} 
class Milk {} 

と種類は、上記のクラスの1つですObjectインスタンスをまたはdrink.getClass().getCanonicalName()程度です。それで大丈夫です。

私の問題は、タイプではなく、drinkクラスタイプのArrayListを作成して初期化したいということです。

ArrayList<Object> list // This is NOT what I want. 
ArrayList<drink.getClass()> list2 // Exactly what I want (but not right) 


私はこれをどのように行うことができますか?

答えて

3

両方ColaDrink

と呼ばれるインターフェイスを作成し、MilkDrinkインターフェイスを作成implements DrinkColaMilkを変更して使用することができますArrayList <Drink> list;

+0

ありがとうございました!これは私の状況では最高の解決策ではありませんが、私は大きなヒントを得たと思います.D –

2

としてDrink

ストアインタフェースを実装List<Drink> list2

関連する問題