public List<Double> getDoubleList(K key) {
   String[] prop = rb.getString(key.key()).split(",");
   List<Double> list = new ArrayList<Double>();
   for (String s : prop) {
     list.add(Double.parseDouble(s));
   }
   return list;
 }
 public String getString(K key, Object... args) {
   String value = rb.getString(key.key());
   if (args == null) return value;
   for (int i = 0; i < args.length; i++) {
     value = value.replace("{" + i + "}", args[i].toString());
   }
   return value;
 }
 public List<Long> getLongList(K key) {
   String[] prop = rb.getString(key.key()).split(",");
   List<Long> list = new ArrayList<Long>();
   for (String s : prop) {
     list.add(Long.parseLong(s));
   }
   return list;
 }
 public List<Float> getFloatList(K key) {
   String[] prop = rb.getString(key.key()).split(",");
   List<Float> list = new ArrayList<Float>();
   for (String s : prop) {
     list.add(Float.parseFloat(s));
   }
   return list;
 }
 public List<Integer> getIntegerList(K key) {
   String[] prop = rb.getString(key.key()).split(",");
   List<Integer> list = new ArrayList<Integer>();
   for (String s : prop) {
     list.add(Integer.parseInt(s));
   }
   return list;
 }
 public double getDouble(K key) {
   return Double.parseDouble(rb.getString(key.key()));
 }
 public float getFloat(K key) {
   return Float.parseFloat(rb.getString(key.key()));
 }
 public long getLong(K key) {
   return Long.parseLong(rb.getString(key.key()));
 }
 public Boolean getBoolean(K key) {
   return Boolean.parseBoolean(rb.getString(key.key()));
 }
 public int getInt(K key) {
   return Integer.parseInt(rb.getString(key.key()));
 }
 public String getString(K key) {
   return rb.getString(key.key());
 }