62,614
社区成员
发帖
与我相关
我的任务
分享
package org.reflection.answer;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
class A
{
private String name;
private Integer age;
public A()
{
super();
}
public A(String name, Integer age)
{
super();
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Integer getAge()
{
return age;
}
public void setAge(Integer age)
{
this.age = age;
}
}
class B
{
private A[] Aset;
private int name;
public A[] getAset()
{
return Aset;
}
public void setAset(A[] aset)
{
Aset = aset;
}
public int getName()
{
return name;
}
public void setName(int name)
{
this.name = name;
}
}
public class ReflectionAnswer
{
public static void main(String[] args)
{
B b = new B();
b.setName(100);
b.setAset(new A[] { new A("1", 10), new A("2", 20), new A("3", 30) });
Class<?> cs = b.getClass();
try
{
Field fe_name = cs.getDeclaredField("name");
Field fe_aset = cs.getDeclaredField("Aset");
fe_name.setAccessible(true);
fe_aset.setAccessible(true);
try
{
A[] oj = (A[]) fe_aset.get(b);
List<A> lst = Arrays.asList(oj);
for (A a : lst)
{
System.out.println(a.getName() + ":" + a.getAge());
}
System.out.println(fe_name.get(b));
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();
}
}
catch (SecurityException e)
{
e.printStackTrace();
}
catch (NoSuchFieldException e)
{
e.printStackTrace();
}
}
}