La mayoría de los programadores asignar valores numéricos a cada elemento en una lista, como los días de la semana , para hacer la codificación más rápida y evitar errores tipográficos. Algunos lenguajes de programación proporcionan un tipo de enumerador o enumeración, que le permite definir un conjunto fijo de constantes en un tipo especial . El uso de un constructo enumeración tiene varias ventajas , como una mejor coincidencia de tipo , la capacidad de definir métodos personalizados , el acceso a los miembros de carácter automático admitidas por el compilador, y una mayor legibilidad y mantenimiento del programa en general. Adjuntar Métodos personalizados
Cuando se utiliza el tipo de enumeración , se define una nueva clase. Al igual que con cualquier otra clase, puede incluir métodos y campos personalizados en la clase. Esto le permite proporcionar funcionalidad encapsulada relacionada con el tipo de enumeración . Por ejemplo, el siguiente se define una clase de tipo de enumeración con la latitud y la longitud media de los estados de EE.UU. . Contiene un método personalizado , la distancia, que calcula la distancia entre una latitud y longitud que se pasa como parámetros al método
importación java.lang.Math estática * , . . Enumeración pública del Estado { AK ( 61.3850 , -152.2683 ) , AL ( 32.7990 , -86.8073 ) ... WV ( 38.4680 , -80.9696 ) , WY ( 42.7475 , -107.2085 ) ;
doble privada latitud final; doble longitud final privado ; Estado ( doble latitud, doble longitud) { this.latitude = latitud ; this.longitude = longitud ;} latitud doble privada () { latitud return;} longitud doble privada () { longitud return;} privado static final double R = 6,371 ;
< p > distancia doble (double lat , lng doble ) {/law /esférica de cos cosinesreturn (sin ( latitud ) * sin ( lat ) + cos ( latitud ) * cos ( lat ) + cos ( lng - longitud) ) * R ;} }
Enhanced tipo coincidencia
Debido a que el tipo de enumeración es una clase, que hace cumplir tipo a juego para incluir a juego contra el conjunto de constantes definidas en la enumeración. Esto evita que los errores al garantizar que los parámetros a funciones contendrán siempre un valor en la clase de tipo de enumeración . Por ejemplo, si una función requiere una temporada como parámetro, el parámetro real pasa a la función en tiempo de ejecución se compararán con los cuatro valores permisibles definidos por la enumeración :
public enum { Temporada PRIMAVERA , VERANO, INVIERNO , FALL } ; tiempo public function ( enumeración Temporada ) { ...} ;
Documentación mejorada
La enumeración construcción hace el código más fácil de entender y mantener . Mediante la creación de una construcción enumeración de los miembros con nombres significativos, como la signatura del documento se crea. Por ejemplo , declarar una enumeración llamada " Opción " hace que sea fácil de entender los casos en el estado de "switch" :
enumeración Opción { grabar, descartar CANCELAR } , escoja la opción ; ... switch ( recoger ) {case SAVE: break; caso DESCARTAR : break; caso CANCELAR : break ;}
métodos especiales automáticas
En Java, el compilador inserta automáticamente los métodos especiales en las la clase para que sea fácil de realizar operaciones estándar . Por ejemplo , el compilador inserta automáticamente un método llamado "valores" que devuelve una matriz de valores constantes de enumeración en el orden en que se declaran . Esto hace iteración en la enumeración valora muy fácil, como en el siguiente ejemplo :
de (mes m: Month.values ()) { System.out.printf ("% s tiene % d días ", m, m.numberOfDays ()) ;}