Я устанавливаю открытые поля Object
this
с помощью отражения. И имя поля, и значение задаются как String
. Я использую несколько различных типов полей: Boolean
, Integer
, Float
, Double
, собственный enum
и String
.
Работает со всеми из них , за исключением String
. Исключением является то, что метод с подписью String.valueOf(String)
не существует ... Теперь я использую грязный обходной путь instanceof
, чтобы определить, является ли каждое поле строкой, и в этом случае просто скопируйте значение в поле. *
private void setField(String field, String value) throws Exception {
Field wField = this.getClass().getField(field);
if(wField.get(this) instanceof String){ //TODO dirrrrty hack
//stupid workaround as java.lang.String.valueOf(java.lang.String) fails...
wField.set(this, value);
}else{
Method parseMethod = wField.getType().getMethod("valueOf", new Class[]{String.class});
wField.set(this, parseMethod.invoke(wField, value));
}
}
Есть идеи, как избежать этого обходного пути?
Как вы думаете, java.lang.String
должен поддерживать метод valueOf(String)
?
Спасибо.