Archivo de la etiqueta: Anotaciones

Limitar posibles valores en una función a través de @Anotaciones.

Limitar los posibles valores que puede recibir una función a través de @Anotaciones, nos ayudará a determinar valores en constantes sin la necesidad de utilizar valores de tipo ENUM y prevenir posibles errores (un valor que no corresponda a la función) en tiempo de compilación.

Agregamos la dependencia a nuestro proyecto

compile 'com.android.support:support-annotations:24.2.1'

Definimos nuestros posibles valores en constantes

public static final int YES = 1;
public static final int NO = -1;

Definimos nuestra @anotación con las constantes antes mencionadas

@IntDef({YES, NO})
@Retention(RetentionPolicy.SOURCE)
public @interface OptionValues {}

Podemos especificar un valor por defecto

@OptionValues int currentOption = NO;

Creamos nuestro accesador y mutador

public void setCurrentOption(@OptionValues int currentOption) {
    this.currentOption = currentOption;
}
@OptionValues public int getCurrentOption() {
    return currentOption;
}

Y así ya podemos asignar un valor

setCurrentOption(YES);

Aquí todo el código del ejemplo

public class MainActivity extends Activity {
	public static final int YES = 1;
    public static final int NO = -1;

	@IntDef({YES, NO})
    @Retention(RetentionPolicy.SOURCE)
    public @interface OptionValues {}

	@OptionValues int currentOption = NO;

	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setCurrentOption(YES);
	}

	public void setCurrentOption(@OptionValues int currentOption) {
        this.currentOption = currentOption;
    }
 
    @OptionValues
    public int getCurrentOption() {
        return currentOption;
    }
}