assert obj != null : "object cannot be null"
on Android device。を使用したい。アサートは機能していないようだ。だからオンラインで検索したところ、このローカルソリューションが見つかりました。
adbシェルsetprop debug.assert 1
それは私のローカルマシンで動作します。
Eclipseプロジェクトを使用してこのコマンドを実行したいので(ソース管理になります)。どうすればいいですか?
ありがとう!
アサートは、Androidでは動作しません。なぜなら、ほとんどの場合、デバッグモードで実行されているのではなく、最適化されたコードです。したがって、適切な解決策は、このようなコード:
if (obj==null) throw new AssertionError("Object cannot be null");
設計上、アサートはデバッグコード用であり、リリース時コード用ではないことに注意してください。したがって、これはAssertをスローする最適な使用法ではないかもしれません。しかし、これはまだあなたがそれを行うことができる方法ですので、...
テスト済みAndroid 4.xデバイス、Java assert on Androidデバイス:
これで、Androidデバイスはチェックをアサートするのが賢明であり、アサートチェックが失敗するとAssertionErrorをスローします。
編集:
デバイスが再起動されるまでPCからアサートを有効にする別の簡単なアプローチ:
platform-tools\adb Shell setprop debug.assert 1
たとえば、Windowsで.batファイルを作成し、デバイスが接続されたときにそれを実行できます。
独自のassertメソッドを作成します。
public static <T> T assertNotNull(T object) {
if (object == null)
throw new AssertionError("Object cannot be null");
return object;
}
同じオブジェクトを返すと、簡潔にするために割り当てでこれを使用できます。
if (somevar == null) throw new RuntimeException();
RuntimeException()を適切な例外サブタイプに置き換えます。
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仮想マシン、-enableassertionsまたは---でアサーションを使用可能にするにはeaコマンドラインオプション
Java –ea YourApp