2016-06-16 12 views
0

私は欲しいものはオブジェクトが持つクラスデータ型を選択することです。たとえば、いくつかの条件に基づいてデータ型を選択してください

Class1 c; 
If(statuscode==1){ 
    c = new Class1(); 
}else if(statuscode==2){ 
    c = new Class2(); 
}else if(statuscode==3){ 
    c = new Class3(); 
} 

しかし、これはケース2とケース3のキャストエラーになります。どうすれば解決できますか?私はアンドロイドでsugarORMを使用していますが、私はいくつかの条件に基づいて、4つのテーブルのいずれかからすべての行を選択する必要がある状況を持っているAndroidの

でsugarORM

を知っている人のために詳細には

、または私は何か他のことをする必要があります。例については

、今

List<Table1> list = Table1.listAll(Table1.class); 
or 
Table1 t = new Table1(); 

、私は受け付けておりテントのステータスコードに基づいて、私は表1、表2、表3または表4

手段を使用する必要があり、私が使用する必要がありますいずれか

List<Table1> list = Table1.listAll(Table1.class); 
or 
List<Table2> list = Table2.listAll(Table2.class); 
or 
List<Table3> list = Table3.listAll(Table3.class); 
or 
List<Table4> list = Table4.listAll(Table4.class); 

どうすればいいですか?

明らかに私は私がすべての行をリストまたは

 List<Table1> list=null; 
     switch (statuscode){ //statuscode in Integer 1,2,3,4 
      case 1: 
       list = Table1.listAll(Table1.class); 
       break; 
      case 2: 
       list = Table2.listAll(Table2.class); 
       break; 
      case 3: 
       list = Table3.listAll(Table3.class); 
       break; 
     } 

その表の新しいオブジェクトをインスタンス化する必要がどこに私のコードでどこでもスイッチケースを使用している試みたが、ケース2とケース3は、キャストエラーになります

このような問題の解決方法は何ですか?

+0

なぜあなたは 'interface'を使用できません。 –

+0

うん。 'A'インタフェースを定義し、3つのクラスが' A'を実装し、 'C'を以下のように' A'と宣言しましょう: 'A c;' – AhmadWabbi

+0

テーブルという名前のクラスを作成します。次に、Table1,2,3にこれを実装させます。 –

答えて

0

明らかな解決策の1つは、ベースクラスを使用することです。あなたは

List<Object> list 

代わりの

List<Table1> list 

のようなものを使用することができるか、など怖いウォンバットが示唆、4クラスがインタフェースを実装してリストを定義するときにそのインターフェイスを使用しています。

+0

私はそれを試してみましょうあなたは –

関連する問題