反射机制

反射:通过JVM运行中的class文件,获取相应对象的方法和属性的机制。

1、Class类三种生成方式:

1.1、Class clz1=Object.class

1.2、Class clz2=Object.getClass()

1.3、Class clz3=Class.forName(类全文件名) // 常用在配置文件中

2、获取对象实例:

  创建对象:package com.xyf.model;

public class User {

    private String name;

    public int age;

    public User() {}

    public void User(String str){}

    public void test(String str){}

    private void test2(String str){}

}

Class clz = Class.forName("com.xyf.model.User");

Object obj = clz.newInstance();

3、通过反射构造器获取对象

  Class clz = Class.forName("com.xyf.model.User");

  调用无参构造器:Constructor con = clz.getConstructor(); Object obj = con.newInstance();  

  调用有参构造器:Constructor con = clz.getConstructor(String.class); Object obj = con.newInstance(参数);

  创建对象:Object obj = con.newInstance();

4、通过反射获取方法

4.1.获取公共方法

     Class clz = Class.forName("com.xyf.model.User");

    Method method = clz.getMethod(“test”, 参数类型-class);

     method.invoke(con.newInstance(), 参数);

4.2.获取私有方法

     Class clz = Class.forName("com.xyf.model.User");//获取class文件

      Method method = clz.getDeclaredMethod("test2", String.class);//获取私有方法test2

     method.setAccessible(true);

     method.invoke(con.newInstance(), 参数);//执行方法

5、通过反射获取属性

      Class clz = Class.forName("com.xyf.model.User");

5.1.获取公共属性

      Field field = clz.getField("name");

      User user = (User) clz.newInstance();// 给属性赋值

      field.set(user, "demo");// 给属性赋值

      String name = field.get(user);// 取值

5.2.获取私有属性

      Field field = clz.getDeclaredField("age");

      User user = (User) clz.newInstance();

      field.setAccessible(true);

      field.set(user, 20);// 给属性赋值

      int age = field.get(user);// 取值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 Java反射机制定义 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法...
    CoderZS阅读 5,540评论 0 26
  • 1.反射机制是什么: 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,...
    蛮大人我们走阅读 2,726评论 0 0
  • 学习Android的同学注意了!!!学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Android学习交流群...
    kingZXY2009阅读 2,586评论 0 0
  • 基本概念 java的反射机制是动态获取类的信息以及动态调用对象的方法。这种机制允许程序在运行时通过reflecti...
    YONGSSU的技术站点阅读 4,117评论 0 10
  • 夜凉如水 似乎有小雪簌簌落下 过了三十三个冬 见过三十三个冬日的白雪 在三十三个冬日的夜睡的安稳 隔着帘子 不知夜...
    韩夭夭阅读 1,508评论 0 0

友情链接更多精彩内容