首页 > 编程语言 >java 反射

java 反射

时间:2023-02-24 18:11:25浏览次数:40  
标签:反射 java Object public 获取 引用 Class 类名

总结一句话就是:在程序运行中根据业务需要由 jvm 动态获取 Class 对象来创建对象、执行方法等操作 。是动态和灵活的而不是事先代码写死

获取 Class

三种方法:类.class;对象.getClass();Class.forName("全限定类名")

Class 常用方法

方法名 作用 说明
forName() 获取 Class 对象
getName() 取全限定的类名(包括包名),即类的完整名字 可以通过 Class.forName() 获取 Class
getSimpleName() 获取类名,不包括包名
getCanonicalName() 取全限定的类名(包括包名) 大多数情况下和 getName() 一样,但内部类和数组时不一样
不能通过 Class.forName() 获取 Class
isInterface() 判断 Class 的引用是否是接口 true 是接口;false 不是
getInterfaces() 获取 Class 的引用实现的所有接口
getSupercalss() 获取 Class 的引用的直接父类 可以一层一层往上获取,直到 Object
newInstance() 使用 Class 的引用的无参构造创建对象 没有无参构造会报错
getFields() 获取 Class 的引用所有的 public 字段,包括继承来的 类似的还有 getMethods()
getField(String name) 获取 Class 的引用指定 public 字段,包括继承来的
getDeclaredFields() 获取 Class 的引用所有的字段(public,private,proteced),只是自己的,不包括继承来的 也有 getDeclaredMethods()

Field 常用方法

方法 作用 说明
boolean isEnumConstant() 字段是否是枚举类型
void set(Object obj, Object val) 给字段设置值 哪个字段调用方法就是给哪个字段设置值,第一个参数是对象,第二个参数是值
对于 final 修饰的字段不会报错,但是实际上不会发生改变
Object get(Object obj) 获取字段的值
String getName() 获取字段名
Class<?> getType() 获取字段的 Class
void setAccessible(boolean flag) 设置字段的可访问性(暴力反射) 非 public 字段调用 get 和 set 会报错,设置了可访问性之后能正常操作

标签:反射,java,Object,public,获取,引用,Class,类名
From: https://www.cnblogs.com/hangychn/p/17152703.html

相关文章

  • java int 引用传递
    integer是final,不可变的,所以也无法实现引用传递的功能。解决方案int[]做一个包装类org.apache.commons.lang.mutable.MutableIntjava.util.concurrent.atomic.Atomi......
  • Java的特性和优点,三大版本,JDK,JRE,JVM
    Java的特性和优点面对对象跨平台性简单高性能分布式动态性多线程安全的健壮的Java的三大版本JavaSE:标准版(桌面程序,控制台开发...)JavaME:......
  • Java判断字符串是否为数字(正负、小数)
    BooleanstrResult=number.matches("-?[0-9]+.*[0-9]*");if(strResult){ //将字符串转换成Double类型 doublen=Double.valueOf(number); //四舍五入保留两位 Bi......
  • Java力扣
    目录JZ6从尾到头打印链表JZ24反转链表JZ25合并两个排序的链表JZ52两个链表的第一个公共结点JZ23链表中环的入口结点JZ6从尾到头打印链表JZ24反转链表JZ25合并......
  • Java多线程学习路线
    在学习之前,需要对线程的概念和多线程编程的常见问题有基本理解。1线程Thread(重要)Runnable(重要)Callable和FutureTask(重要)CompletableFuture2线程池ThreadPool......
  • JAVA文件夹上传解决方案
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1. 通过form表单向后端发送请求    ......
  • 解析器Jackson_json转Java对象与案例_校验用户名是否存在
    JSON_解析器Jackson_json转Java对象@Testpublicvoidtest5()throwsException{//1.初始化JSON字符串Stringjson="{\"gender\":\"男\",\"......
  • Java将毫秒(时间戳)转时分秒格式
    /***把时间戳转换为:时分秒*@parammillisecond*@return*/publicstaticStringgetTimeString(finallongmillisecond){if(......
  • java并发知识点
    Java并发什么是线程,Java中实现线程的常用方式有几种,如何创建线程,终止线程有哪些方式线程是操作系统调度的最小单元;java创建线程:执行newThread().start()方法调用操......
  • JavaScript 之下划线转换驼峰和驼峰转换下划线
    下划线转换驼峰functiontoHump(lineStr){returnlineStr.replace(/\_(\w)/g,function(all,letter){returnletter.toUpperCase();});}驼峰转换下划线......