之前对于反射的理解只是认为,通过一个类的名字动态创建出一个类来。
其实,知道类中属性的名字也可以,动态的得到该属性。
比如
class A{
S = “abc”;
}
我们可以动态加载S
A
package com.sxzlc.test.refelect; public class A { String S = "abc"; String R = "www"; }
B
package com.sxzlc.test.refelect; import java.lang.reflect.Field; public class B { String s2 = m("S"); public String m(String param) { try { Field field = A.class.getDeclaredField(param); field.setAccessible(true); System.out.println(field.getName()); //输出abc System.out.println(field.get(new A())); return ""; } catch (Exception e) { throw new RuntimeException(e); } } }
TestMain
package com.sxzlc.test.refelect; public class TestMain { /** * @param args */ public static void main(String[] args) { B b = new B(); } }
扩展:(思想)
更好的思想是提供get方法 ,对get方法进行反射,因为有时属性的方法可能是私有的。
参考:http://topic.csdn.net/u/20110426/21/d7706d52-c267-4bd3-bf3a-c3e8094c25bc.html?seed=51821956&r=73020870#r_73020870