java-lib-fw/src/main/java/de/synolo/lib/fw/utils/TypedProperties.java

43 lines
1.5 KiB
Java

package de.synolo.lib.fw.utils;
import java.util.Properties;
public class TypedProperties extends Properties {
private static final long serialVersionUID = 1L;
interface Converter<T> {
T convert(String input) throws Exception;
}
public <T> T getObject(String key, T defaultValue, Converter<T> converter) {
T val = defaultValue;
try {
val = converter.convert(getProperty(key));
}catch(Exception e) {
val = defaultValue;
}
return val;
}
public byte getByte(String key, byte defaultValue) { return getObject(key, defaultValue, Byte::parseByte); }
public byte getByte(String key) { return getByte(key, (byte)0); }
public short getShort(String key, short defaultValue) { return getObject(key, defaultValue, Short::parseShort); }
public short getShort(String key) { return getShort(key, (short)0); }
public int getInt(String key, int defaultValue) { return getObject(key, defaultValue, Integer::parseInt); }
public int getInt(String key) { return getInt(key, 0); }
public long getLong(String key, long defaultValue) { return getObject(key, defaultValue, Long::parseLong); }
public long getLong(String key) { return getLong(key, (byte)0); }
public float getFloat(String key, float defaultValue) { return getObject(key, defaultValue, Float::parseFloat); }
public float getFloat(String key) { return getFloat(key, (byte)0); }
public double getDouble(String key, double defaultValue) { return getObject(key, defaultValue, Double::parseDouble); }
public double getDouble(String key) { return getDouble(key, (byte)0); }
}