根据某些条件选择数据类型

时间:2016-06-16 07:44:25

标签: java android class casting sugarorm

对于那些在android中没有使用sugarORM的人来说,我想要的是选择对象应该具有哪种类数据类型。例如,

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

但是这会在案例2和案例3中给出我的演员错误。那么,如何解决呢?

详细地说,对于那些在Android中了解sugarORM的人

我在android中使用sugarORM,我有一种情况需要根据某些条件从四个表中的任何一个中选择所有行,或者,我需要做其他的事情。

例如,

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

现在,基于我收到的Intent的状态代码,我需要使用Table1,Table2,Table3或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);

我该怎么做?

我尝试的是,在我的代码中的任何地方使用switch case,无论我需要列出所有行还是实例化该表的新对象

        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会给出施法错误

那么,针对此类问题的解决方案是什么?

1 个答案:

答案 0 :(得分:0)

一个明显的解决方案是使用基类。你可以使用像

这样的东西
List<Object> list

而不是

List<Table1> list

或者可怕的wombat建议,让4个类实现一个接口并在定义列表时使用该接口。

相关问题