我正在设置Object
this
通过反射的公共字段。字段名称和值均以 给出String
。我使用了几种不同的字段类型:Boolean
, Integer
, Float
, Double
, an ownenum
和 a 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)
吗?
谢谢。