我想assert obj != null : "object cannot be null"
在Android设备上使用。该断言似乎不起作用,因此我在网上搜索后发现了这种本地解决方案:
亚行外壳setprop debug.assert 1
它确实可以在我的本地计算机上运行。
我想使用我的Eclipse项目运行此命令(因此它将在源代码控件中)。我该怎么做?
Answers:
断言无法在Android中运行,因为大多数情况下,一个人不是在调试模式下运行,而是运行一些优化的代码。因此,正确的解决方案是使用如下代码手动引发异常:
if (obj==null) throw new AssertionError("Object cannot be null");
应该注意的是,根据设计,断言仅用于调试代码,而不用于发布时间代码。因此,这可能不是抛出Assert的最佳用途。但这就是您仍然可以做到的方式,所以...
在Android 4.x设备上进行了测试,可以在Android设备上使用Java断言:
现在,您的Android设备可以断言检查了,断言检查失败时将抛出AssertionError。
编辑:
另一种简单的方法是从PC启用断言,直到设备重新启动:
platform-tools\adb shell setprop debug.assert 1
例如,您可以创建一个.bat文件(在Windows上)并在连接设备时运行它。
创建自己的assert方法:
public static <T> T assertNotNull(T object) {
if (object == null)
throw new AssertionError("Object cannot be null");
return object;
}
为了简洁起见,返回相同的对象可以在分配中使用此对象。