这个程序本身没有任何语法问题,但如果你的目标是读取取成员变量a,b,p的话,写法是不对的。
因为这里的 a,b ,p 是private的,所以上面的代码是读取不到的。要修改有两个方法
一是,修改class fm[code=java]class fm
{ public int a=10;
public int b=20;
public point p=new point(1,2
)[/code]另一种方法是:[code=java]import java.lang.*;
import java.util.*;
import java.lang.reflect.*;
import java.awt.*;
class test
{
public static void main(String[] args)
{
try
{
Class newfm=Class.forName("fm");
//Field fields[]=newfm.getFields();
Field fields[]=newfm.getDeclaredFields();//用这一句读取私有成员变量,
for(int i=0;i<fields.length;i++)
System.out.println(fields[i].getName());
//但是假设你需要Set某个私有成员变量时,需要提升权限先。
//fields[i].setAccessible()
//然后才能用,set
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
}
class fm
{
int a=10;
int b=20;
Point p=new Point(1,2);
}[/code] |