zoukankan      html  css  js  c++  java
  • Java反射

     

     

    @Test
        /**
         * 获得Class对象
         * * 1.通过类名.class
         * * 2.对象.getClass()
         * * 3.Class.forName();
         */
        public void demo1() throws ClassNotFoundException{
            // 1.通过类名.class的方式
            Class clazz1 = Person.class;
            // 2.通过对象.getClass()的方式
            Person person = new Person();
            Class clazz2 = person.getClass();
            
            // 3.Class类forName();获得(推荐)
            Class clazz3 = Class.forName("com.imooc.reflect.test.Person");
        }

    @Test
        // 测试公有的属性
        public void demo1() throws Exception{
            // 获得Class
            Class class1 = Class.forName("com.imooc.reflect.test.Person");
            // 获得属性:
            Field field = class1.getField("name");
            // 操作属性:  p.name = "";
            Person p = (Person) class1.newInstance();
            field.set(p, "李四");// p.name = "李四";
            
            Object obj = field.get(p);
            System.out.println(obj);
            
        }
        
        @Test
        // 测试私有的属性
        public void demo2() throws Exception{
            // 获得Class
            Class class1 = Class.forName("com.imooc.reflect.test.Person");
            // 获得私有的属性
            Field field = class1.getDeclaredField("sex");
            // 操作属性:
            Person p = (Person) class1.newInstance();
            // 私有属性,需要设置一个可访问的权限:
            field.setAccessible(true);
            field.set(p, "男");
            // 获取值:
            Object obj = field.get(p);
            System.out.println(obj);
            System.out.println(p);
        }

    @Test
        // 测试公有的方法
        public void demo1() throws Exception{
            Class class1 = Class.forName("com.imooc.reflect.test.Person");
            // 实例化:
            Person person = (Person) class1.newInstance();
            // 获得公有的方法
            Method method = class1.getMethod("eat");
            // 执行该方法:
            method.invoke(person); // person.eat();
        }
        
        @Test
        // 测试私有的方法
        public void demo2() throws Exception{
            Class class1 = Class.forName("com.imooc.reflect.test.Person");
            // 实例化:
            Person person = (Person) class1.newInstance();
            // 获得方法:
            Method method = class1.getDeclaredMethod("run");
            // 设置私有的属性的访问权限:
            method.setAccessible(true);
            // 执行该方法:
            method.invoke(person, null);
        }
        
        @Test
        // 测试私有的方法带参数
        public void demo3() throws Exception{
            Class class1 = Class.forName("com.imooc.reflect.test.Person");
            // 实例化:
            Person person = (Person) class1.newInstance();
            // 获得该方法:
            Method method = class1.getDeclaredMethod("sayHello", String.class);
            // 设置访问权限:
            method.setAccessible(true);
            // 执行:
            Object obj = method.invoke(person, "Tom");
            System.out.println(obj);
        }
  • 相关阅读:
    javascript重点笔记
    我的CSS架构
    排行榜妙用——CSS计数器
    回归基础从新认识——HTML+CSS
    前端开发工具(安装及常用技巧)——sublime text 3
    手机访问php环境移动端静态页面
    H5前端面试题及答案(2)
    H5前端面试题及答案(1)
    python笔记--学会使用Fiddler
    python进程/线程/协成
  • 原文地址:https://www.cnblogs.com/shouyaya/p/12347578.html
Copyright © 2011-2022 走看看