【问题标题】:Select Datatype based on some condition根据某些条件选择数据类型
【发布时间】:2016-10-17 14:21:00
【问题描述】:

对于那些没有在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 会出现转换错误

那么,这类问题的解决方案是什么?

【问题讨论】:

  • 你为什么不能使用interface
  • 是的。定义一个接口A,让你的三个类实现A并将c声明为A,如下所示:A c;
  • 创建一个名为 Table 的类。然后让表1、2、3实现这个。
  • @Scary Wombat 让我试试,到时候通知你
  • @AhmadWabbi 让我试试,到时候通知你

标签: java android class casting sugarorm


【解决方案1】:

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

List<Object> list

而不是

List<Table1> list

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

【讨论】:

  • 让我试试,然后通知你
猜你喜欢
  • 2021-08-18
  • 2020-10-01
  • 1970-01-01
  • 2021-02-08
  • 1970-01-01
  • 2020-07-20
  • 1970-01-01
  • 2023-01-10
  • 1970-01-01
相关资源
最近更新 更多