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