Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Java调用if和else代码块_Java_Android_If Statement - Fatal编程技术网

Android Java调用if和else代码块

Android Java调用if和else代码块,java,android,if-statement,Java,Android,If Statement,我正在使用ORMLite,并创建了一个从ORMLite DAO框架扩展而来的自定义DAO。在自定义dao中,我重写了create方法,并添加了一些逻辑。我查询一个实体列表,如果不存在,则创建一个新实体,如果存在,则返回现有实体的id。查询工作正常,因为我正在运行时调试和检查列表对象。但是,只要列表大小为0,它就会执行if..else的第一个块,然后执行第二个块,完全忽略return语句。如果列表不是空的,它将按预期工作 有人知道为什么这会显得很古怪吗?我甚至将覆盖方法的名称改为“persist”

我正在使用ORMLite,并创建了一个从ORMLite DAO框架扩展而来的自定义DAO。在自定义dao中,我重写了create方法,并添加了一些逻辑。我查询一个实体列表,如果不存在,则创建一个新实体,如果存在,则返回现有实体的id。查询工作正常,因为我正在运行时调试和检查列表对象。但是,只要列表大小为0,它就会执行if..else的第一个块,然后执行第二个块,完全忽略return语句。如果列表不是空的,它将按预期工作

有人知道为什么这会显得很古怪吗?我甚至将覆盖方法的名称改为“persist”,以防它出于某种原因递归地调用自己,但它不起作用

@Override
public int create(DigitalAsset dAsset) throws SQLException {
        List<DigitalAsset> assets = this.queryForMatching(dAsset);

        if (assets.size() == 0) {
            return super.create(dAsset);
        }
        else {
            return assets.get(0).getId();
        }
    }
@覆盖
公共int create(DigitalAsset dAsset)引发SQLException{
列表资产=this.queryForMatching(dAsset);
如果(assets.size()==0){
返回super.create(dAsset);
}
否则{
返回资产。get(0.getId();
}
}

我现在觉得自己很笨,但经过进一步研究,我发现ORMLite create方法返回的是受影响行的数量,而不是id。结果表明,代码根本没有在两个块中运行。很晚了,我当时可能还没有完全意识到。

你确定
super.create
不只是返回相同的ID吗?您是否尝试在每个
if/else
块中放置日志语句?老实说,这绝对没有理由发生。不仅
else
只在不为空时执行,而且
return
应该结束该方法。Hmmmm。。。您确定它正在返回
资产.get(0).getId()
?如果它去了别的地方,不是会出错吗?有时,由于字节码的生成方式,调试器会转到不同的返回语句。您可以尝试更改逻辑,使其不具有返回,例如
intid=-1;如果(0){id=super…}否则{id=assets…}返回id;}我还尝试设置一个int,然后返回它。我知道它正在两个模块中运行,因为我已经调试了代码并逐步完成。这就是正在发生的事情。