Enums y la anotación android intDef

Tengo un enum:

public enum AppEnums { SERVICE_ERROR, CONNECTION_ERROR; } 

Y quiero usarlo en un intDef de Android Annotation:

 @IntDef({AppEnums.CONNECTION_ERROR, AppEnums.SERVICE_ERROR}) public @interface ServiceErrors { } 

Muestra el error:

Tipos incompatibles encontrados, requeridos: 'largo'

¿Qué puedo hacer con esta incompatibilidad?

No quiero manejar los valores de los parámetros de AppEnum manualmente, Enum crear valores automáticamente de ordinario. AppEnums.CONNECTION_ERROR.ordinal() devuelve el valor int del parámetro enum pero no funciona aquí.

La idea principal de anotación IntDef es usar un conjunto de constantes int como un enum , pero sin enum . En este caso tiene que declarar todas las constantes manualmente.

 @IntDef({Status.IDLE, Status.PROCESSING, Status.DONE, Status.CANCELLED}) @Retention(RetentionPolicy.SOURCE) @interface Status { int IDLE = 0; int PROCESSING = 1; int DONE = 2; int CANCELLED = 3; } 

Aquí puede ver un ejemplo detallado.

Bueno, no puedes hacerlo de esa manera. AppEnums.SERVICE_ERROR nunca devolverá int ; AppEnums.SERVICE_ERROR . Ese es el punto de los tipos enumerados.

Lo que puedo sugerir es esto:

 public static class AppEnums { public static final int CONNECTION_ERROR = 0; public static final int SERVICE_ERROR = 1; } @IntDef({AppEnums.CONNECTION_ERROR,AppEnums.SERVICE_ERROR}) public @interface ServiceErrors { } 

Copiado del comentario de Yazazzello a continuación:

IntDef – nuevo Enums para el desarrollo de Android. Los enums requieren a menudo más del doble de memoria que las constantes estáticas. Debe evitar estrictamente el uso de enums en Android . Así IntDef donde diseñado para reemplazar Enums, no puede utilizar Enum en declaraciones IntDef

  • Añadir elemento a la lista final
  • Cómo eliminar el valor duplicado de arraylist en Android
  • ¿Se incluyen métodos no referenciados en el ejecutable final?
  • No se puede reproducir este vídeo
  • Cómo utilizar el lector de PDF Radaee sdk
  • ¿Cómo puedo ejecutar la línea de comandos FFMPEG y aceptar múltiples tuberías (vídeo y audio) sin bloquear en la primera entrada?
  • Hacer que mis botones de radio se seleccionen en Android
  • ¿Esto causará fugas de memoria?
  • Android: ksoap, "UnknownHostException: host no resuelto" dependiendo de la API
  • FTPClient Subiendo archivo = SocketException: Conexión restablecida
  • Cómo hacer una cámara personalizada con Live Stickers
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.