Как использовать assert в android?
Я хочу использовать assert obj != null : "object cannot be null"
на Android-устройстве. Утверждение, похоже, не работает, поэтому я искал в Интернете, и я нашел это локальное решение:
adb shell setprop debug.assert 1
он работает на моей локальной машине.
Я хочу запустить эту команду с помощью моего проекта eclipse (поэтому он будет в исходном элементе управления).
Как я могу это сделать?
Спасибо!
Ответы
Ответ 1
Assert не будет работать в Android, потому что большую часть времени человек не работает в режиме отладки, а скорее некоторый оптимизированный код. Таким образом, правильное решение состоит в том, чтобы вручную генерировать исключение, с таким кодом:
if (obj==null) throw new AssertionError("Object cannot be null");
Следует отметить, что по дизайну Asserts предназначены для кода отладки, а не для кода времени выпуска. Таким образом, это может быть не лучшим использованием броска Assert. Но так вы можете это сделать, поэтому...
Ответ 2
Протестировано на устройстве Android 4.x, можно использовать Java assert на устройстве Android:
- Изменить /system/build.prop(например, X-plore), добавить строку в конец файла: debug.assert = 1
- Перезагрузите телефон
Теперь ваше Android-устройство разумно утверждать проверки и будет вызывать AssertionError, если ошибка проверки assert.
EDIT:
Еще один простой подход, позволяющий утверждать с ПК до перезапуска устройства:
platform-tools\adb shell setprop debug.assert 1
Вы можете, например, создать файл .bat(в Windows) и запустить его, когда устройство подключено.
Ответ 3
if (somevar == null) throw new RuntimeException();
Замените RuntimeException() соответствующим подтипом исключения.
Ответ 4
Создайте свой собственный метод assert:
public static <T> T assertNotNull(T object) {
if (object == null)
throw new AssertionError("Object cannot be null");
return object;
}
Возвращение одного и того же объекта позволяет использовать это в назначениях для краткости.
Ответ 5
Разделяя мой класс, который я использую для утверждений на 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);
}
}
}
Надеюсь, что это поможет!