打印枚举的名称

时间:2012-01-10 10:28:49

标签: java android enums sensor android-logcat

我在ubuntu上使用eclipse + Android SDK。

我想打印传感器类型设备的名称,有一个A LOT OF THEM,我想自动完成。

如果我使用

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

我打印(int)类型,但我想要使用枚举的名称。

我怎么能这样做?

提前吃完。

3 个答案:

答案 0 :(得分:13)

对于枚举,您可以使用以下代码轻松获取所有常量的数组并循环遍历它们:

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

但是,链接到的Sensor类不是枚举,而是包含常量列表。如果没有指定所有常量名称,就无法像枚举一样以编程方式循环遍历该列表。

但是,您可以创建一个静态查找,将int映射到您要使用的String值,例如

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

你可以这样使用:

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

这种方法确实意味着你仍然必须写出每个常量并在常量改变时更新列表,但你只需要做一次。将查找包装在某种辅助方法或类中是一个好主意,具体取决于您希望重用它的程度。

答案 1 :(得分:4)

您可以引入abstract方法并在每个enumeration

中实施
enum Colour {

Red {

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

abstract String colourName();
}

这种方式为您提供了更大的灵活性,例如,如果您不想显示其程序化名称

答案 2 :(得分:3)

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