Ho un enum:enumerazioni e annotazione Android intDef
public enum AppEnums {
SERVICE_ERROR,
CONNECTION_ERROR;
}
e voglio usarlo in un intDef di Android della nota:
@IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR})
public @interface ServiceErrors {
}
di errore mostra:
incompatibili tipi trovati, richiesti: 'long'
Cosa posso fare con questa incompatibilità?
Non voglio gestire manualmente i valori dei parametri AppEnum, Enum crea automaticamente i valori in modo normale. AppEnums.CONNECTION_ERROR.ordinal()
restituisce il valore int del parametro enum ma non funziona qui.
Beh, non puoi proprio farlo in quel modo. AppEnums .SERVICE_ERROR non restituirà mai int; restituirà AppEnums .SERVICE_ERROR. Questo è il punto dei tipi enumerati. – Bhargav
'@ IntDef' funziona solo con numero intero. Se vuoi lavorare con un Enum non hai bisogno di '@ IntDef'. Basta usare l'Enum come parametro. –
Non si dovrebbe mai fare affidamento sul valore ordinale delle costanti di enum, dal momento che la modifica dell'ordine delle costanti interromperà in modo sottile il codice, il peggior tipo di rottura. –