|
}
<span class="hljs-keyword">catch (Exception e) {
<span class="hljs-keyword">throw <span class="hljs-keyword">new RuntimeException(e);
}
}
<span class="hljs-comment">/**
-
通过反射给对象的指定字段赋值
-
<span class="hljs-doctag">@param target 目标对象
-
<span class="hljs-doctag">@param fieldName 字段的名称
-
<span class="hljs-doctag">@param value 值
*/
<span class="hljs-function"><span class="hljs-keyword">public <span class="hljs-keyword">static <span class="hljs-keyword">void <span class="hljs-title">setValue<span class="hljs-params">(Object target,Object value) {
Class<?> clazz = target.getClass();
String[] fs = fieldName.split(<span class="hljs-string">".");
<span class="hljs-keyword">try {
<span class="hljs-keyword">for(<span class="hljs-keyword">int i = <span class="hljs-number">0; i < fs.length - <span class="hljs-number">1; i++) {
Field f = clazz.getDeclaredField(fs[i]);
f.setAccessible(<span class="hljs-keyword">true);
Object val = f.get(target);
<span class="hljs-keyword">if(val == <span class="hljs-keyword">null) {
Constructor<?> c = f.getType().getDeclaredConstructor();
c.setAccessible(<span class="hljs-keyword">true);
val = c.newInstance();
f.set(target,val);
}
target = val;
clazz = target.getClass();
}
Field f = clazz.getDeclaredField(fs[fs.length - <span class="hljs-number">1]);
f.setAccessible(<span class="hljs-keyword">true);
f.set(target,value);
}
<span class="hljs-keyword">catch (Exception e) {
<span class="hljs-keyword">throw <span class="hljs-keyword">new RuntimeException(e);
}
}
}
<span class="cke_reset cke_widget_drag_handler_container"><img class="cke_reset cke_widget_drag_handler" title="点击并拖拽以移动" src="data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==" alt="" width="15" height="15" data-cke-widget-drag-handler="1">
88、如何通过反射调用对象的方法?
答:请看下面的代码:
|