当前位置: 首页 > news >正文

反射获取Constructor、Field、Method对象

1、获取构造器

Constructor [ ]    getConstructor s   ( ) 获取全部的构造器:只能获取 public 修饰的构造器
package com.csdn.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.junit.Test;
import java.lang.reflect.Constructor;
public class Print {@Testpublic void test01() {//a.第一步:获取类对象Class c = Student.class;//b.提取类中的全部的构造器对象Constructor[] constructors = c.getConstructors();//c.遍历构造器for (Constructor constructor : constructors) {System.out.println(constructor.getName() + "===>" + constructor.getParameterCount());
//          com.csdn.pojo.Student===>0
//          com.csdn.pojo.Student===>2}}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Student {private String name;private int age;
}
getConstructor(Class . . .   parameterTypes)获取某个构造器:只能拿 public 修饰的 某个 构造器
    @Testpublic void test02() throws NoSuchMethodException {//a.第一步:获取类对象Class c = Student.class;//b.定位单个构造器对象(按照参数定位无参数构造器)Constructor cons = c.getConstructor();System.out.println(cons.getName() + "===>" + cons.getParameterCount());//com.csdn.pojo.Student===>0Constructor cons2 = c.getConstructor(String.class, int.class);System.out.println(cons2.getName() + "===>" + cons2.getParameterCount());//com.csdn.pojo.Student===>2}
getDeclaredConstructor s (Class <?> . . . parameterTypes)获取 全部 构造器:只要你敢写,这里就能拿到,无所谓   权限 是否可及

 

    @Testpublic void test04() throws NoSuchMethodException {//a.第一步:获取类对象Class c = Student.class;//b.定位单个构造器对象(按照参数定位无参数构造器)Constructor[] cons = c.getDeclaredConstructors();//c.遍历构造器for (Constructor constructor : cons) {System.out.println(constructor.getName() + "===>" + constructor.getParameterCount());//com.csdn.pojo.Student===>0//com.csdn.pojo.Student===>2}}
@Data
class Student {private String name;private int age;private Student() {}private Student(String name, int age) {this.name = name;this.age = age;}
}
getDeclaredConstructor (Class<?> . . .   parameterTypes)获取 某个 构造器:只要你敢写,这里就能拿到,无所谓  权限 是否可及
    @Testpublic void test03() throws NoSuchMethodException {//a.第一步:获取类对象Class c = Student.class;//b.定位单个构造器对象(按照参数定位无参数构造器)Constructor cons = c.getDeclaredConstructor();System.out.println(cons.getName() + "===>" + cons.getParameterCount());//com.csdn.pojo.Student===>0Constructor cons2 = c.getDeclaredConstructor(String.class, int.class);System.out.println(cons2.getName() + "===>" + cons2.getParameterCount());//com.csdn.pojo.Student===>2}
@Data
class Student {private String name;private int age;private Student() {}private Student(String name, int age) {this.name = name;this.age = age;}
}

使用反射技术获取构造器对象并使用

  • 反射的第一步是先得到类对象,然后从类对象中获取类的成分对象
  • Class类中用于获取构造器的方法
    方法说明
    Constructor <?> [ ] getConstructors ( )返回所有构造器对象的数组(只能拿 public 的)
    Constructor <?> [ ] getDeclaredConstructors()返回所有构造器对象的数组,存在就能拿到
    Constructor <T>    getConstructor (Class<?> . . . parameterTypes)返回单个构造器对象(只能拿 public 的)
    Constructor <T>    getDeclaredConstructor (class<?> . . . parameterTypes)返回单个构造器对象,存在就能拿到

http://www.lryc.cn/news/177329.html

相关文章:

  • 【Netty】 ByteBuf的常用API总结
  • 热门敏捷开发管理工具
  • Java分支结构:一次不经意的选择,改变了我的一生。
  • Unity中Shader需要了解的点与向量
  • Java初始化大量数据到Neo4j中(一)
  • Excel·VBA日期时间转换提取正则表达式函数
  • Django中的缓存
  • Python 编程基础 | 第二章-基础语法 | 2.4、while 语句
  • Qt Charts简介
  • MinGW、GCC、GNU和MSVC是什么?有什么区别?
  • 引入easyExcel后,导致springboot项目无法开启tomcat
  • Doris数据库FE——启动流程源码详细解析
  • 服务断路器_Resilience4j线程池隔离实现
  • 原神启动原神启动原神启动原神启动
  • Glide - Android的图像加载和缓存库,专注于平滑滚动
  • 如何使用 API 接口获取商品数据,从申请 API 接口、使用 API 接口到实际应用,一一讲解
  • 苹果 CMS 原生 Java 白菜影视 App 源码【带打包教程】
  • Flutter开发之Package与Plugin
  • [极客大挑战 2019]RCE ME 取反绕过正则匹配 绕过disable_function设置
  • 硬盘接口随机
  • 芯片测试方案之如何测试芯片EN输入阈值?
  • screenOrientation的值
  • 为什么SQL预编译可以防止SQL注入攻击
  • 基于体系结构-架构真题2022(四十一)
  • 【uniapp+vue3 】页面加载时根据不同角色设置导航栏标题
  • 不讲故事的设计模式-模板方法模式
  • 基于SpringBoot的酒店客房管理系统
  • 消息队列-RabbitMQ(二)
  • 程序通过命令行获取操作系统名称+版本+CPU名称等:Part2
  • 微软最热门的10款前端开源项目!