From: arne@vajhoej.dk   
      
   On 2/24/2025 9:22 PM, Lawrence D'Oliveiro wrote:   
   > And then there’s the long-windedness of code like   
   >   
   > static final java.util.Map TypeNames;   
   > /* mapping from sensor type codes to symbolic names */   
   > static   
   > {   
   > TypeNames = new java.util.HashMap();   
   > TypeNames.put(Sensor.TYPE_ACCELEROMETER, "accelerometer");   
   > TypeNames.put(Sensor.TYPE_AMBIENT_TEMPERATURE, "ambient   
   temperature");   
   > TypeNames.put(Sensor.TYPE_GRAVITY, "gravity");   
   > TypeNames.put(Sensor.TYPE_GYROSCOPE, "gyroscope");   
   > TypeNames.put(Sensor.TYPE_LIGHT, "light");   
   > TypeNames.put(Sensor.TYPE_LINEAR_ACCELERATION, "linear accel");   
   > TypeNames.put(Sensor.TYPE_MAGNETIC_FIELD, "magnetic");   
   > TypeNames.put(Sensor.TYPE_ORIENTATION, "orientation");   
   > TypeNames.put(Sensor.TYPE_PRESSURE, "pressure");   
   > TypeNames.put(Sensor.TYPE_PROXIMITY, "proximity");   
   > TypeNames.put(Sensor.TYPE_RELATIVE_HUMIDITY, "relative humidity");   
   > TypeNames.put(Sensor.TYPE_ROTATION_VECTOR, "rotation");   
   > TypeNames.put(Sensor.TYPE_TEMPERATURE, "temperature");   
   > } /*static*/   
   >   
   > because the language doesn’t provide expressions that evaluate to   
   > common structure types like dictionaries/maps.   
      
   If you are on Java 10+ then you could:   
      
   Map typeNames = Map.of(Sensor.TYPE_ACCELEROMETER,   
   "accelerometer",   
      
   Sensor.TYPE_AMBIENT_TEMPERATURE, "ambient temperature",   
    ...);   
      
   But the Sensor.TYPE_* int approach has been obsolete since Java 5 where   
   Java got enums.   
      
   With enum the need for that Map disappears.   
      
   You can either hack it:   
      
   public class EnumHack {   
    public static enum SensorType {   
    TYPE_ACCELEROMETER, TYPE_AMBIENT_TEMPERATURE, TYPE_GRAVITY;   
    public String prettyName() {   
    return name().substring(5).toLowerCase().replace('_', ' ');   
    }   
    }   
    public static void main(String[] args) {   
      
   System.out.println(SensorType.TYPE_AMBIENT_TEMPERATURE.prettyName());   
    }   
   }   
      
   or do it the right way:   
      
   public class EnumRight {   
    public static enum SensorType {   
    TYPE_ACCELEROMETER("accelerometer"),   
   TYPE_AMBIENT_TEMPERATURE("ambient temperature"), TYPE_GRAVITY("gravity");   
    private String prettyName;   
    private SensorType(String prettyName) {   
    this.prettyName = prettyName;   
    }   
    public String getPrettyName() {   
    return prettyName;   
    }   
    }   
    public static void main(String[] args) {   
      
   System.out.println(SensorType.TYPE_AMBIENT_TEMPERATURE.getPrettyName());   
    }   
   }   
      
   Arne   
      
   --- SoupGate-DOS v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|