黑马程序员技术交流社区

标题: 反射中如何使用getFileds方法取出并打印所有成员变量? [打印本页]

作者: 刘永建    时间: 2013-4-16 14:11
标题: 反射中如何使用getFileds方法取出并打印所有成员变量?
我知道用getField,但是这一次只能取出一个呀,请大神指教。
作者: 刘策    时间: 2013-4-16 14:38
  1. package day03;

  2. import java.lang.reflect.Field;

  3. public class Test {
  4.         private int x;
  5.         private String str;
  6.         public float y;
  7.         public static void main(String[] args) throws Exception{
  8.                 Test test = new Test();
  9.                 //获取 一个字节码对象
  10.                 Class cla = Class.forName("day03.Test");
  11.                 Field[] fields = cla.getDeclaredFields();
  12.                 for(Field field : fields){
  13.                         field.setAccessible(true);
  14.                         System.out.println(field.get(test));
  15.                 }
  16.                
  17.         }
  18. }
复制代码
我比较喜欢getDeclaredFields().这个方法,这个方法不管你什么权限都能拿到,
作者: HM张健    时间: 2013-4-18 14:54
import java.util.*;
import java.lang.reflect.*;
public class ReflectionTest{
        
        public static void main(String[] args){
               
                    String name;
                        
                        Scanner in = new Scanner(System.in);
                        System.out.println("请输入类名(例如:java.util.Date)");
                        name = in.next();
                        
                        
                try{
            
                        Class cl = Class.forName(name);
                                printFields(cl);
                                System.out.println();
                           
                        }catch(ClassNotFoundException cn){
                                
                                cn.printStackTrace();
                                
                                }
                        System.exit(0);        
               
                }

public static void printFields(Class cl){
                        
                        Field[] fields = cl.getFields();
                        
                        for(Field f:fields){
                                
                                Class type = f.getType();//类型名
                                String name = f.getName();//成员变量名
                                System.out.println(" ");
                                String modifiers = Modifier.toString(f.getModifiers());//修饰符
                          System.out.print(modifiers+" "+type+" "+name+";");
                          

                                }
}

}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2