Ich möchte assert obj != null : "object cannot be null"
auf Android-Gerät verwenden. Die Behauptung scheint nicht zu funktionieren, also habe ich online gesucht und diese lokale Lösung gefunden:
adb shell setprop debug.assert 1
Es funktioniert auf meinem lokalen Computer.
Ich möchte diesen Befehl mit meinem Eclipse-Projekt ausführen (also in der Quellcodeverwaltung). Wie kann ich es tun?
Antworten:
Assert funktioniert in Android nicht, da eine Person die meiste Zeit nicht im Debug-Modus ausgeführt wird, sondern in optimiertem Code. Daher besteht die richtige Lösung darin, eine Ausnahme mit folgendem Code manuell auszulösen:
if (obj==null) throw new AssertionError("Object cannot be null");
Es ist zu beachten, dass Asserts standardmäßig für den Debug-Code und nicht für den Release-Zeitcode vorgesehen sind. Dies ist möglicherweise nicht die beste Verwendung, um einen Assert zu werfen. Aber so kannst du es trotzdem machen, also ...
quelle
Auf einem Android 4.x-Gerät getestet, ist es möglich, Java Assert auf einem Android-Gerät zu verwenden:
Jetzt ist es für Ihr Android-Gerät sinnvoll, Überprüfungen zu aktivieren, und es wird AssertionError ausgelöst, wenn die Bestätigungsprüfung fehlschlägt.
BEARBEITEN:
Ein weiterer einfacher Ansatz, der Asserts vom PC bis zum Neustart des Geräts ermöglicht:
platform-tools\adb shell setprop debug.assert 1
Sie können beispielsweise eine .bat-Datei (unter Windows) erstellen und ausführen, wenn das Gerät angeschlossen ist.
quelle
Erstellen Sie Ihre eigene Assert-Methode:
public static <T> T assertNotNull(T object) { if (object == null) throw new AssertionError("Object cannot be null"); return object; }
Wenn Sie dasselbe Objekt zurückgeben, können Sie dies der Kürze halber in Zuweisungen verwenden.
quelle
if (somevar == null) throw new RuntimeException();
Ersetzen Sie RuntimeException () durch einen geeigneten Ausnahmesubtyp.
quelle
Das Teilen meiner Klasse, die ich für Behauptungen auf Android verwende, ist einfacher, hat eine schöne Benennung und ist sehr elegant, weil Sie damit Aussagen wie diese schreiben können:
Assert.that(obj!=null, "Object should not be null");
Hier ist der Code für die Klasse:
public class Assert { public static void that(boolean condition, String message) { if (!condition) { throw new AssertionError(message); } } }
Ich hoffe es hilft!
quelle
Um Assertion in Java Virtual Machine verfügbar zu machen, verwenden Sie - enableassertions oder - ea Befehlszeilenoptionen
quelle