zoukankan      html  css  js  c++  java
  • class.getDeclaredFields()与class.getFields()

    * getFields()与getDeclaredFields()区别:getFields()只能访问类中声明为公有的字段,私有的字段它无法访问.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关  

    * getMethods()与getDeclaredMethods()区别:getMethods()只能访问类中声明为公有的方法,私有的方法它无法访问,能访问从其它类继承来的公有方法.getDeclaredFields()能访问类中所有的字段,与public,private,protect无关,不能访问从其它类继承来的方法  

    * getConstructors()与getDeclaredConstructors()区别:getConstructors()只能访问类中声明为public的构造函数.getDeclaredConstructors()能访问类中所有的构造函数,与public,private,protect无关 

    package test;
    
    public class Point1 {
        private int x;
        public int y;
        public String a="asdasd";
        public Point1() {}
        public Point1(int i, int j) {
            super();
            this.x=i;
            this.y=j;
        }
    }
    public class fieldTest {
        public static void main(String[] args) throws  Exception {
            Point1 point=new Point1(5, 10);
            Field fieldY=point.getClass().getField("y");      //  y字段公有
            System.out.println(fieldY);
            System.out.println(fieldY.get(point));
            
            Field fieldX=point.getClass().getDeclaredField("x");   //x字段私有
            fieldX.setAccessible(true);                            //AccessibleTest类中的成员变量为private,故必须进行此操作  
            System.out.println(fieldX.get(point));                 //如果没有在获取Field之前调用setAccessible(true)方法,异常
            
            Point1 point2=new Point1();
            
            Field[] fields=point.getClass().getFields();          //把Point1函数中的String字段做改动
            for(Field field:fields) {                           
                if (field.getType()==String.class) {              
                    String oldValue =(String) field.get(point2);          
                    String newVaule =oldValue.replace('a', 'b');
                    field.set(point2, newVaule);
                    System.out.println(field.get(point2));
                }
            }
            
        }
    }
    输出结果
    public int test.Point1.y
    10
    5
    bsdbsd
  • 相关阅读:
    桂林印象
    快变
    近期的事
    *C#中使用ref和out一点认识!*
    *在框架集页面放置TreeView控件时页面跳转的问题解决*
    *无法找到脚本库的问题*
    *Ajax.Net快速入门*
    *网页过期*
    *Prototype开发笔记*
    *正则表达式*
  • 原文地址:https://www.cnblogs.com/qiangqiangqiang/p/7777831.html
Copyright © 2011-2022 走看看