zoukankan      html  css  js  c++  java
  • java反射获取/创建对象

    获取class对象

    1、调用某个对象的getClass()方法

     例:Person p =  new Person();

       Class clazz  =  p.getClass();

    2、调用某个类的class属性

     例:Class clazz = Person.class;

    3、使用Class类中的forName()静态方法(最安全,性能好)

     例:Class clazz  = Class.forName("类的全路径");(最常用)

    Class类:反射的核心类,可以获取类的属性和方法等信息

    Field类:java.lang.reflect包中的类,表示类的成员变量,可以获取和设置类的属性

    Method类:java.lang.reflect包中的类,表示类的方法,可以获取和设置类中的方法信息或执行方法

    Constructor类:java.lang.reflect包中的类,表示类的构造方法

    例:

    获取Person类的所有方法信息

      Method[] method = clazz.getDeclareMethods();

    获取Person类的所有成员属性信息

      Field[] field = clazz.getDeclareFields();

    获取Person类的所有构造方法信息

      Constructor[] constructor = clazz.getDeclareConstructors();

    创建对象

    Class对象的newInstance()
    1. 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求 该Class对象对应的类有默认的空构造器

     例:Person p = (Person) clazz.newInstance();
    

      

    调用Constructor对象的newInstance()

    2、先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance() 方法来创建 Class对象对应类的实例,通过这种方法可以选定构造方法创建实例

    例://获取构造方法并创建对象 
      Constructor c=clazz.getDeclaredConstructor(String.class,String.class,int.class); 
      //创建对象并设置属性 
      Person p1=(Person) c.newInstance("李四","男",20);
    

      

  • 相关阅读:
    基于Centos 搭建Jenkins环境
    基于 CentOS 7 搭建 GitLab
    SpringBoot2.x集成WebSocket
    使用jackson序列化json时遇到的坑
    红米3 Flyme5.1.9.5插桩适配长期不定时更新
    教你一招:使用最快速的方式激活windows10专业版
    ubuntu/mint 安装google的拼音输入法
    Ubuntu 14.04.4官方默认更新源sources.list
    Ubuntu(基于Ubuntu)中常用的apt和dpkt命令
    Linux--目录结构解释(转)
  • 原文地址:https://www.cnblogs.com/2328322824chx/p/13615742.html
Copyright © 2011-2022 走看看