• Java反射的简单使用


    一.反射是什么

      在运行状态中,对于任意一个类,都能知道这个类中的所有属性和方法。对于任意一个对象,都能调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象的方法的功能称为Java的反射机制。

      所以通俗地说,反射就是在运行时,只要知道要操作的类是什么,就可以获取类的完整构造和调用对应的方法。

    二.反射的使用

      一般使用一个类,我们都是知道这个类,可以直接通过new创建对象来使用。

      而反射则是不知道这个类,不能用new创建对象的情况下,使用反射的API来调用该类的属性或方法。

      下面是一个简单的例子。

    public class User {
        private String name;
    
       //get set...      
    }
    public class DemoApplication {
        public static void main(String[] args) throws Exception {
    
            //正常情况下,创建类来调用
            User user = new User();
            user.setName("jade");
            System.out.println("name:" + user.getName());
    
            //使用反射来调用
            Class cls = Class.forName("com.example.demo.model.User");
            Constructor userConstructor = cls.getConstructor();
            Object userObj = userConstructor.newInstance();
          
            Method setNameMethod = cls.getMethod("setName", String.class);
            setNameMethod.invoke(userObj,"sam");
            Method getNameMethod = cls.getMethod("getName");
            System.out.println("name:" + getNameMethod.invoke(userObj));
    
        }
    }

      我们是通过反射使用set方法来传值,然后用反射使用get方法来获取值。上面运行的结果是:

    name:jade
    name:sam

      使用反射获取对象的步骤:

      1.获取类的Class实例对象。

    Class cls = Class.forName("com.example.demo.model.User");

      2.根据Class对象获取Constructor对象。

    Constructor userConstructor = cls.getConstructor();

      3.使用Constructor对象的newInstance方法获取反射类对象。

    Object userObj = userConstructor.newInstance();

      调用对象中的方法步骤:

      1.获取方法的Method对象。

    Method setNameMethod = cls.getMethod("setName", String.class);

      2.利用invoke调用方法。

    setNameMethod.invoke(userObj,"sam");

      这样就是反射的基本使用方式。

      

  • 相关阅读:
    【ABAP系列】SAP LSMW(摘自官网)
    【ABAP系列】SAP ABAP POPUP弹出框自建内容
    【ABAP系列】SAP ABAP ALV中的TOP_OF_PAGE添加任意图标
    彻底关闭Windows Defender丨Win10
    word中怎样设置页码包含总页数
    10款流行的Markdown编辑器,总有一款适合你
    MyEclipse安装插件
    Eclipse集成SonarLint
    MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用
    详述 IntelliJ IDEA 插件的安装及使用方法
  • 原文地址:https://www.cnblogs.com/shadoll/p/14694512.html
Copyright © 2020-2023  润新知