美文网首页
java反射机制的学习

java反射机制的学习

作者: 梦沉薇露 | 来源:发表于2016-05-15 00:00 被阅读0次

    getFields()与getDeclaredFields()区别

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

    getMethods()与getDeclaredMethods()区别

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

    getConstructors()与getDeclaredConstructors()区别

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

    我就不细说了
    代码面前:了无秘密!

    package com.zyj.weixin.auth.model;
    /**
    *首先定义一个People对象
    */
    package com.zyj.weixin.auth.model;
    
    public class People {
        private long id;
        private String userName;
        private String password;
        public String gender;
        protected String  realName;
        //把id的getId和setId改为private测试
        private long getId() {
            return id;
        }
        private void setId(long id) {
            this.id = id;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public String getRealName() {
            return realName;
        }
        public void setRealName(String realName) {
            this.realName = realName;
        }
        
        
        
        
    }
    
    
    /**
    *定义一个Address 对象
    */
    package com.zyj.weixin.auth.model;
    
    public class Address {
        private long id;
        public String adress;
        private long userid;//对应people的ID
        public long getId() {
            return id;
        }
        public void setId(long id) {
            this.id = id;
        }
        public String getAdress() {
            return adress;
        }
        public void setAdress(String adress) {
            this.adress = adress;
        }
        public long getUserid() {
            return userid;
        }
        public void setUserid(long userid) {
            this.userid = userid;
        }
        
        
    }
    
    
    /**
    *定义一个Developer 
    */
    package com.zyj.weixin.auth.model;
    
    public class Developer extends People {
          private String phone;
          public  String nickName;
          protected double balance;
          private Address address;
          public Address address2;
            
            public Address getAddress() {
            return address;
        }
            
            @Override
            public String getUserName() {
                // TODO Auto-generated method stub
                return super.getUserName();
            }
            @Override
            public void setUserName(String userName) {
                // TODO Auto-generated method stub
                super.setUserName(userName);
            }
        public void setAddress(Address address) {
            this.address = address;
        }
        public Address getAddress2() {
            return address2;
        }
        public void setAddress2(Address address2) {
            this.address2 = address2;
        }
            public String getPhone() {
                return phone;
            }
            public void setPhone(String phone) {
                this.phone = phone;
            }
            public String getNickName() {
                return nickName;
            }
            public void setNickName(String nickName) {
                this.nickName = nickName;
            }
            public double getBalance() {
                return balance;
            }
            public void setBalance(double balance) {
                this.balance = balance;
            }
          
    }
    
    
    

    最后我们来测试一下

    package com.zyj.weixin.auth.model;
    
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    public class test {
        public static void main(String[] args) {
            //第一个测试类
            Class class1 = People.class;
            Field [] fed= class1.getFields();
            for(int i=0;i<fed.length;i++){
                 System.out.println("第一个测试类,获取到第"+i+ "个:" +fed[i].getName());
            }
            System.out.println("|-------------这是美丽的分割线----------------|");
            //第二个测试类
        
            Field [] fed2= class1.getDeclaredFields();
            for(int i=0;i<fed2.length;i++){
                 System.out.println("第二个测试类,获取到第"+i+ "个:" +fed2[i].getName());
            }
            System.out.println("|-------------这是美丽的分割线----------------|");
            //第三个测试类
            Class class2 = Developer.class;
            Field [] fed3= class2.getFields();
            for(int i=0;i<fed3.length;i++){
                 System.out.println("第三个测试类,获取到第"+i+ "个:" +fed3[i].getName());
            }
            System.out.println("|-------------这是美丽的分割线----------------|");
            //第四个测试类
            
            Field [] fed4= class2.getDeclaredFields();
            for(int i=0;i<fed4.length;i++){
                 System.out.println("第四个测试类,获取到第"+i+ "个:" +fed4[i].getName());
            }
            System.out.println("|-------------这是第二种美丽的分割线----------------|");
            
            Method [] method1= class1.getMethods();
            for(int i=0;i<method1.length;i++){
                 System.out.println("第一个方法,获取到第"+i+ "个:" +method1[i].getName());
            }
            System.out.println("|-------------这是第二种美丽的分割线----------------|");
            Method [] method2= class1.getDeclaredMethods();
            for(int i=0;i<method2.length;i++){
                 System.out.println("第二个方法,获取到第"+i+ "个:" +method2[i].getName());
            }
            System.out.println("|-------------这是第二种美丽的分割线----------------|");
            Method [] method3= class2.getMethods();
            for(int i=0;i<method3.length;i++){
                 System.out.println("第三个方法,获取到第"+i+ "个:" +method3[i].getName());
            }
            System.out.println("|-------------这是第二种美丽的分割线----------------|");
            Method [] method4= class2.getDeclaredMethods();
            for(int i=0;i<method4.length;i++){
                 System.out.println("第四个方法,获取到第"+i+ "个:" +method4[i].getName());
            }
        
        
            
        }
    
    
    }
    
    

    测试结果如下

    第一个测试类,获取到第0个:gender
    |-------------这是美丽的分割线----------------|
    第二个测试类,获取到第0个:id
    第二个测试类,获取到第1个:userName
    第二个测试类,获取到第2个:password
    第二个测试类,获取到第3个:gender
    第二个测试类,获取到第4个:realName
    |-------------这是美丽的分割线----------------|
    第三个测试类,获取到第0个:nickName
    第三个测试类,获取到第1个:address2
    第三个测试类,获取到第2个:gender
    |-------------这是美丽的分割线----------------|
    第四个测试类,获取到第0个:phone
    第四个测试类,获取到第1个:nickName
    第四个测试类,获取到第2个:balance
    第四个测试类,获取到第3个:address
    第四个测试类,获取到第4个:address2
    |-------------这是第二种美丽的分割线----------------|
    第一个方法,获取到第0个:setRealName
    第一个方法,获取到第1个:setUserName
    第一个方法,获取到第2个:getPassword
    第一个方法,获取到第3个:getGender
    第一个方法,获取到第4个:setGender
    第一个方法,获取到第5个:getRealName
    第一个方法,获取到第6个:getUserName
    第一个方法,获取到第7个:setPassword
    第一个方法,获取到第8个:wait
    第一个方法,获取到第9个:wait
    第一个方法,获取到第10个:wait
    第一个方法,获取到第11个:equals
    第一个方法,获取到第12个:toString
    第一个方法,获取到第13个:hashCode
    第一个方法,获取到第14个:getClass
    第一个方法,获取到第15个:notify
    第一个方法,获取到第16个:notifyAll
    |-------------这是第二种美丽的分割线----------------|
    第二个方法,获取到第0个:getId
    第二个方法,获取到第1个:setRealName
    第二个方法,获取到第2个:setUserName
    第二个方法,获取到第3个:setId
    第二个方法,获取到第4个:getPassword
    第二个方法,获取到第5个:getGender
    第二个方法,获取到第6个:setGender
    第二个方法,获取到第7个:getRealName
    第二个方法,获取到第8个:getUserName
    第二个方法,获取到第9个:setPassword
    |-------------这是第二种美丽的分割线----------------|
    第三个方法,获取到第0个:getAddress
    第三个方法,获取到第1个:setUserName
    第三个方法,获取到第2个:getUserName
    第三个方法,获取到第3个:setAddress
    第三个方法,获取到第4个:getAddress2
    第三个方法,获取到第5个:setAddress2
    第三个方法,获取到第6个:getPhone
    第三个方法,获取到第7个:setPhone
    第三个方法,获取到第8个:getNickName
    第三个方法,获取到第9个:setNickName
    第三个方法,获取到第10个:getBalance
    第三个方法,获取到第11个:setBalance
    第三个方法,获取到第12个:setRealName
    第三个方法,获取到第13个:getPassword
    第三个方法,获取到第14个:getGender
    第三个方法,获取到第15个:setGender
    第三个方法,获取到第16个:getRealName
    第三个方法,获取到第17个:setPassword
    第三个方法,获取到第18个:wait
    第三个方法,获取到第19个:wait
    第三个方法,获取到第20个:wait
    第三个方法,获取到第21个:equals
    第三个方法,获取到第22个:toString
    第三个方法,获取到第23个:hashCode
    第三个方法,获取到第24个:getClass
    第三个方法,获取到第25个:notify
    第三个方法,获取到第26个:notifyAll
    |-------------这是第二种美丽的分割线----------------|
    第四个方法,获取到第0个:getAddress
    第四个方法,获取到第1个:setUserName
    第四个方法,获取到第2个:getUserName
    第四个方法,获取到第3个:setAddress
    第四个方法,获取到第4个:getAddress2
    第四个方法,获取到第5个:setAddress2
    第四个方法,获取到第6个:getPhone
    第四个方法,获取到第7个:setPhone
    第四个方法,获取到第8个:getNickName
    第四个方法,获取到第9个:setNickName
    第四个方法,获取到第10个:getBalance
    第四个方法,获取到第11个:setBalance
    
    

    相关文章

      网友评论

          本文标题:java反射机制的学习

          本文链接:https://www.haomeiwen.com/subject/cklvrttx.html