2012-01-10 14 views
7

Estoy usando eclipse + Android SDK en ubuntu.Imprimiendo el nombre de la enumeración

Me gustaría imprimir el nombre de un dispositivo tipo sensor, existe un A LOT OF THEM y quiero hacerlo automáticamente.

si uso un

Log.d("SENSORTYPE","Type: " + tempSensor.getType()) 

puedo imprimir el tipo (int), pero me gustaría usar el nombre de quien la enumeración.

¿Cómo podría hacer eso?

Gracias por adelantado.

+1

no es El método "getName()" funciona? – rajpara

Respuesta

13

de las enumeraciones, se puede obtener una matriz de todas las constantes y bucle sobre ellas muy fácilmente utilizando el código como este:

for(YourEnum value: YourEnum.values()){ 
    System.out.println("name="+value.name()); 
} 

Sin embargo, la clase Sensor se vincula a no es una enumeración, pero contiene una lista de constantes. No hay forma de pasar el bucle programático sobre esa lista como una enumeración sin especificar todos los nombres de las constantes.

Sin embargo, puede crear una búsqueda estática que mapea los enteros al valor de cadena que desea utilizar, por ejemplo

Map<Integer,String> lookup = new HashMap<Integer,String>(); 
lookup.put(TYPE_ACCELEROMETER,"Accelerometer"); 
//Code a put for each TYPE, with the string you want to use as the name 

Se puede usar esta como esta:

Log.d("SENSORTYPE","Type: " + lookup.get(tempSensor.getType())); 

Este enfoque significa que todavía tiene que escribir cada constante y actualizar la lista si las constantes cambian, pero solo tiene que hacerlo una vez. Sería una buena idea ajustar la búsqueda en algún tipo de método o clase auxiliar dependiendo de qué tan ampliamente desee volver a utilizarlo.

3
Log.d("SENSORNAME", "NAME: " + tempSensor.name()); 
4

se puede introducir un método abstract e implementarlo en todos los enumeration

enum Colour { 

Red { 

    @Override 
    String colourName() { 
     return "Red"; 
    } 
}; 

abstract String colourName(); 
} 

De esta manera le da más flexibilidad, por ejemplo, si no desea mostrar su nombre de programación

Cuestiones relacionadas