Sto usando IntDef da Android Support annotation nel mio codice (ma la mia domanda è di più ampia portata quindi per favore continuate a leggere :) come questo:annotazione @IntDef e valore di ritorno dal codice di altri che non può essere annotato o come disattivare temporaneamente l'annotazione dal codice?
public class UiLockMode
{
@IntDef({DEFAULT, NONE, VISIBLE, TRANSPARENT})
@Retention(RetentionPolicy.SOURCE)
public @interface AllowedValues {}
public static final int DEFAULT = 0;
public static final int NONE = 1;
public static final int VISIBLE = 2;
public static final int TRANSPARENT = 3;
}
successivo, ho avuto alcuni altri metodi annotati con essa in questo modo:
protected void setLockMode(@UiLockMode.AllowedValues int lockMode) {
...
a quel punto è tutto soddisfacente e piacevole, ma il problema si presenta quando desidero passare valore restituito da altri metodi per setLockMode()
, come cioè da Parcelable attuazione:
private Foo(Parcel in) {
...
setLockMode(in.getInt());
In tal caso il mio IDE lamenta che sono autorizzato a utilizzare solo DEFAULT, NONE, VISIBLE, TRANSPARENT
con setLockMode()
. Ma il getInt()
non è il mio metodo, quindi non posso annotare il suo valore restituito e rendere tutto ciò felice. Sono anche quasi sicuro che non si tratti di un caso di utilizzo unico, ma non sono riuscito a trovare il modo di disabilitare temporaneamente l'annotazione AllowedValues
da lamentarsi qui o di "trasmettere" il valore restituito da getInt()
per fare in modo che AllowedValue
non si lamenti.
Quindi le mie domande sono: esiste un modo per risolvere questo problema? Forse mi manca qualcosa di ovvio sulle annotazioni, ma forse dovrò creare una segnalazione di bug per far sì che Google risolva questo problema?
Qualsiasi input o pensiero apprezzato.
Grazie per la risposta, +1. Sì, so che posso sopprimere gli avvertimenti, ma mi piacerebbe non farlo a meno che non avessi altre opzioni, quindi in fondo mi chiedo se qui c'è un altro modo per risolvere il mio problema. –
Suppongo che potresti provare a estendere Parcel per aggiungere il metodo myGetInt. – fractalwrench
Appena controllato ed esteso non è un modo per andare come si vedrà ancora lamentarsi come annotazione fa prevedere 'int' non un metodo. –