Можно ли использовать аннотацию JSR 305, например javax.annotation.Nonnull
, в коде, который будет работать на Android? Не похоже, чтобы виртуальная машина Dalvik поддерживала пакет, и эти аннотации имеют политику хранения во время выполнения. Кто-нибудь работал с использованием пакета javax (или альтернатив, таких как использование eclipse JDT)?
Можно ли использовать аннотации JSR 305 с кодом, который будет работать на Android?
Ответы (3)
Afaik, аннотации могут отсутствовать во время выполнения (даже при сохранении во время выполнения), что приведет к скрытому удалению аннотации. Поэтому, если ваш код компилируется, все в порядке, даже если виртуальная машина, на которой впоследствии будет выполняться ваш код, не знает об аннотации.
В вашем случае вы используете javax.annotation.Nonnull
, который используется инструментами статического анализа, но обычно не действует во время выполнения. Так что да, вы можете использовать его.
Напротив, гипотетическая другая аннотация, присутствие которой имеет отношение к вашему приложению во время выполнения, должна присутствовать в пути к классам.
Пакет javax.* не полностью поддерживается dalvik или ADT. Однако вы можете использовать обычные аннотации. Полный список пакетов в официальной документации.
Тем не менее, все, что нацелено на файлы .class, не будет работать. Существует библиотека под названием dexmaker, которая помогает решить эту проблему.
Почему бы не использовать androidx.annotation из стандартной платформы Android SDK?