Я добавил в приложение удобный для пользователя файл конфигурации, используя java.util.Properties
и пытаюсь добавить вокруг него обертку, чтобы упростить преобразования типов. В частности, я хочу, чтобы возвращаемое значение "наследовало" его тип из предоставленного значения по умолчанию. Вот что у меня до сих пор:
protected <T> T getProperty(String key, T fallback) {
String value = properties.getProperty(key);
if (value == null) {
return fallback;
} else {
return new T(value);
}
}
Возвращаемое значение из getProperty("foo", true)
будет тогда логическим, независимо от того, было ли оно прочитано из файла свойств и аналогично для строк, целых чисел, удвоений и c. Конечно, приведенный выше фрагмент фактически не компилируется:
PropertiesExample.java:35: unexpected type
found : type parameter T
required: class
return new T(value);
^
1 error
Я делаю это неправильно или просто пытаюсь сделать что-то, что не может быть сделано?
Изменить: Пример использования:
// I'm trying to simplify this...
protected void func1() {
foobar = new Integer(properties.getProperty("foobar", "210"));
foobaz = new Boolean(properties.getProperty("foobaz", "true"));
}
// ...into this...
protected void func2() {
foobar = getProperty("foobar", 210);
foobaz = getProperty("foobaz", true);
}