//1.通过对象获取
            Person p=new Person();
            Class c=p.getClass();
        
        //2.通过类名获取
            Class c2=Person.class;

//3.通过完整的包名+类名获取
            Class c3=Class.forName("com.zys.fanshe.Person");
        
        构造方法:
        通过反射返回一个构造方法:
            public Constructor<T> getConstructor(Class<?>... parameterTypes) 获取public修饰, 指定参数类型所对应的构造方法
                Constructor con1 = c.getConstructor(null);
                获取了空构造方法con1
                创建对象
                Object obj =con1.newInstance();

public Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 获取指定参数类型所对应的构造方法(包含私有的)
                Constructor con1 = c.getDeclaredConstructor(null);
                可以强行创建私有构造:con1.setAccessible(true);
                Object obj =con1.newInstance();

?返回多个构造方法
               public Constructor<?>[] getConstructors() 获取所有的public 修饰的构造方法
                    Constructor[] cons = c.getConstructors();
                    for (Constructor con : cons) {
                        System.out.println(con);
                    }

public Constructor<?>[] getDeclaredConstructors() 获取所有的构造方法(包含私有的)
                    Constructor[] cons = c.getDeclaredConstructors();
                    for (Constructor con : cons) {
                        System.out.println(con);
                    }

成员变量:
                返回一个成员变量
                   public Field getField(String name) 获取指定的 public修饰的变量
                        Field ageField = c.getField("age");
                        
        
                    public Field getDeclaredField(String name) 获取指定的任意变量
                        Field addressField = c.getDeclaredField("address");

返回多个成员变量
                    public Field[] getFields() 获取所有public 修饰的变量

Field[] fields = c.getFields();
                        //遍历
                    public Field[] getDeclaredFields() 获取所有的 变量 (包含私有)
                        
                        Field[] fields =  c.getDeclaredFields();
                        for (Field field : fields) {
                            System.out.println(field);
                        }

public void set(Object obj, Object value)
                    在指定对象obj中,将此 Field 对象表示的成员变量设置为指定的新值
                        nameField.set(obj, 23)
                        
                    public Object get(Object obj)
                         返回指定对象obj中,此 Field 对象表示的成员变量的值
                        nameField.get(obj)
                        nameField,nameField都是通过getField()获得的对象

成员方法:
                    返回获取一个方法:
                            public Method getMethod(String name, Class<?>... parameterTypes)
                             获取public 修饰的方法
                            //public void method1()  没有返回值没有参数的方法
                            Method m1 = c.getMethod("method1", null);
                            
                            //public String method4(String name)
                            Method m4 = c.getMethod("method4", String.class);
                            
                            执行方法:m1.invoke(obj, null);
                            
                        
    
                            public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
                             获取任意的方法,包含私有的
                            参数1: name 要查找的方法名称; 参数2: parameterTypes 该方法的参数类型
                    返回获取多个方法:
                            public Method[] getMethods() 获取本类与父类中所有public 修饰的方法
                            public Method[] getDeclaredMethods() 获取本类中所有的方法(包含私有的)

最新文章

  1. git各种命令介绍以及碰到的各种坑
  2. Oracle卸载
  3. Python之什么是函数
  4. jQurey 获取当前时间
  5. 3D知识补充
  6. java中字符串的非空判断
  7. C# Redis实战
  8. 在Activiti官方源码上提交的两个bugfix
  9. Rsync+Inotify-tools实现数据实时同步
  10. 在Windows环境下部署Axis2/C服务
  11. [Android学习笔记]继承自ViewGroup的控件的过程学习
  12. adb常用操作命令
  13. 【Go】那么多数值类型,应该选哪个?
  14. Linux简单线程池实现(带源码)
  15. c函数指针
  16. 在 Activity 中实现 getContentView 操作
  17. 【算法】php实现斐波那契数列
  18. 【C++ Primer | 07】常用算法
  19. [easyUI] datagrid 数据格 可以进行分页
  20. HTTP Status 500 - Unable to create directory

热门文章

  1. Hawkeye部署Github监控系统
  2. Unity碰撞检测
  3. 图论--传递闭包(Floyd模板)
  4. 细说 PEP 468: Preserving Keyword Argument Order
  5. 数据源管理 | 基于DataX组件,同步数据和源码分析
  6. FastDFS文件服务器安装指南附安装包和自启动(看此篇就够了)
  7. Java——Spring常用jar包功能详解
  8. Three Blocks Palindrome (easy version)[暴力-预处理]
  9. OpenWrt R2020.3.11 去广告 抗污染 加速 PSW 无缝集成 UnPnP NAS
  10. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口