Android
Typedef Аннотации: @IntDef, @StringDef
Поиск…
замечания
Пакет аннотаций включает в себя ряд полезных аннотаций метаданных, которые вы можете украсить своим собственным кодом, чтобы помочь поймать ошибки.
Просто добавьте зависимость в файле build.gradle
.
dependencies {
compile 'com.android.support:support-annotations:25.3.1'
}
Аннотации IntDef
Эта аннотация гарантирует, что используются только действительные целочисленные константы.
Следующий пример иллюстрирует шаги для создания аннотации:
import android.support.annotation.IntDef;
public abstract class Car {
//Define the list of accepted constants
@IntDef({MICROCAR, CONVERTIBLE, SUPERCAR, MINIVAN, SUV})
//Tell the compiler not to store annotation data in the .class file
@Retention(RetentionPolicy.SOURCE)
//Declare the CarType annotation
public @interface CarType {}
//Declare the constants
public static final int MICROCAR = 0;
public static final int CONVERTIBLE = 1;
public static final int SUPERCAR = 2;
public static final int MINIVAN = 3;
public static final int SUV = 4;
@CarType
private int mType;
@CarType
public int getCarType(){
return mType;
};
public void setCarType(@CarType int type){
mType = type;
}
}
Они также позволяют завершить код для автоматического предоставления разрешенных констант.
Когда вы создаете этот код, генерируется предупреждение, если параметр типа не ссылается на одну из определенных констант.
Объединение констант с флагами
Используя IntDef#flag()
установленный в true
, можно комбинировать несколько констант.
Используя тот же пример в этом разделе:
public abstract class Car {
//Define the list of accepted constants
@IntDef(flag=true, value={MICROCAR, CONVERTIBLE, SUPERCAR, MINIVAN, SUV})
//Tell the compiler not to store annotation data in the .class file
@Retention(RetentionPolicy.SOURCE)
.....
}
Пользователи могут комбинировать разрешенные константы с флагом (например, |
, &
, ^
).