2016-06-16 4 views
0

Для тех, кто не использует sugarORM в android, я хочу, чтобы выбрать, какой тип данных класса должен иметь объект. Например,Выберите тип данных, основанный на некотором состоянии

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 в Android

Я использую sugarORM в андроиде и у меня есть ситуации, когда мне нужно выбрать из всех строк из любого одного из четыре таблицы на основе некоторого условия, или , Мне нужно сделать что-то еще.

Для примера,

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

Теперь, на основании коды состояния намерения я получаю, мне нужно использовать Table1, Table2, Таблицу 3 или table4

Значит, мне нужно использовать либо

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', пусть ваши три класса реализуют' A' и объявляют 'c' как' A' следующим образом: 'A c;' – AhmadWabbi

+0

Создайте класс с именем Table. Затем пусть Table1,2 и 3 реализуют этот. –

ответ

0

Одним из очевидных решений является использование базового класса. Вы можете использовать что-то вроде

List<Object> list 

вместо

List<Table1> list 

или, как страшно вомбат предложил, иметь 4 класса реализации интерфейса и использовать этот интерфейс при определении списка.

+0

Позвольте мне попробовать и сообщить u тогда –

Смежные вопросы