我想在 Android 设备上使用 assert obj != null : "object cannot be null"。这个断言似乎不起作用,所以我在网上搜索,找到了这个本地解决方案:
assert obj != null : "object cannot be null"
断言1
它在我的本地机器上确实有用。
我希望使用我的 Eclipse 项目运行这个命令(这样它就在源代码控制中)。 我该怎么做?
if (somevar == null) throw new RuntimeException();
用适当的异常子类型替换 RuntimeException ()。
断言不能在 Android 中工作,因为大多数情况下人们不是在调试模式下运行,而是在一些优化的代码中运行。因此,正确的解决方案是手动抛出异常,代码如下:
if (obj==null) throw new AssertionError("Object cannot be null");
应该注意的是,根据设计,Asserts 用于调试代码,而不是用于发布时间代码。所以这可能不是抛出 Assert 的最佳用途。但你还是可以这么做,所以..。
在 Android 4.x 设备上测试,可以在 Android 设备上使用 Java 断言:
现在您的 Android 设备可以明智地断言检查,并且当断言检查失败时会抛出 AssertionError。
编辑:
另一种简单的方法,在设备重新启动之前从 PC 启用断言:
platform-tools\adb shell setprop debug.assert 1
例如,您可以创建一个.bat 文件(在 Windows 上) ,并在附加设备时运行它。
创建您自己的断言方法:
public static <T> T assertNotNull(T object) { if (object == null) throw new AssertionError("Object cannot be null"); return object; }
返回相同的对象允许在赋值中使用该对象以简洁。
分享我的类,我用它在 Android 上进行断言,它更简单,有很好的命名和非常优雅,因为它允许你像下面这样编写断言:
Assert.that(obj!=null, "Object should not be null");
下面是该类的代码:
public class Assert { public static void that(boolean condition, String message) { if (!condition) { throw new AssertionError(message); } } }
希望能有帮助!
要使断言在 Java 虚拟机中可用,请使用 -使能断言或 -< em > ea 命令行选项
Java-ea YourApp