标题: 关于反射 [打印本页] 作者: 山水游客 时间: 2012-6-28 20:42 标题: 关于反射 例
public class A
{
public B b=new B();
}
public class B
{
public C c=new C();
}
public class C
{
public string Text= "Hello ";
}
public class Test
{
public static void Main()
{
A a=new A();
//如何通过反射获取a.b.c.Text值,这里只是例子还有很多不知道类型和层次。
}
}
我如何通过反射实现这样效果
可以提供的信息有字符串 "a.b.c.Text "和对象a,如何获取Text的值和设置。作者: 赵倩倩 时间: 2012-6-28 21:08
A a = (A) Class.forName("A").newInstance();
Field fieldB = a.getClass().getField("b");
B b = (B) fieldB.get(a);
Field fieldC = b.getClass().getField("c");
C c = (C) fieldC.get(b);
Field fieldText = c.getClass().getField("Text");
String text = (String) fieldText.get(c);
System.out.println(text);
这么一顿发射不就拿出来了,呵呵。不着急,一层层的向内作者: 周朋飞 时间: 2012-6-28 22:18
A a = new A();
// 如何通过反射获取a.b.c.Text值,这里只是例子还有很多不知道类型和层次。
Class clazz = Class.forName("A");//首先这个类名是运行时传给你的,你只管用,你生成的是A在内存里的一份字节码,用这份字节码可以去构造 对 象或者获得属性
System.out.println(clazz.getName());//这不就是a的值吗 这就是通过字节码获得A的名字
Field field = clazz.getField("b");//然后通过字段类,获得该类当中的属性,但是你要声明这个属性石属于哪个A对象,就是相面的 调用get方法就行了