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)
か?
ありがとう。