首页 > 编程语言 >Java 反射

Java 反射

时间:2022-11-23 21:14:50浏览次数:31  
标签:反射 Java String ... Object 获取 Class

 

 

 

 

 反射=反向射击=Java向自己射击=Java对自身进行描述=Java用研究外部事物的方法反过来研究自己

——反射的好处:

1. 可以在程序运行过程中,操作这些对象。

2. 可以解耦,提高程序的可扩展性。

——获取Class对象的方式:

1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象

***多用于配置文件,将类名定义在配置文件中,读取文件,加载类

2. 类名.class:通过类名的属性class获取

***多用于参数的传递

3. 对象.getClass():getClass()方法在Object类中定义着。

***多用于对象的获取字节码的方式

【结论】:

同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的class对象都是同一个,即单例模式。

 

 

 

——Class对象功能:

【获取功能】:

1. 获取成员变量们:

Field[] getFields():获取所有public修饰的成员变量

Field getField(String name):获取所有public修饰的指定名称的成员变量

Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符

Field getDeclaredField(String name)

2. 获取构造方法们:

Constructors<?>[] getConstructors()

Constructors<T>[] getConstructor(类<?>...parameterTypes)

Constructors<T>[] getDeclaredConstructor(类<?>...parameterTypes)

Constructors<?>[] getDeclaredConstructors()

3. 获取成员方法们:

Method[] getMethods()

Method getMethod(String name,类<?>...parameterTypes)

Method[] getDeclaredMethods()

Method getDeclaredMethod(String name,类<?>...parameterTypes)

4. 获取类名

String getName()

——Field:成员变量

【操作】:

1. 设置值

void set(Object obj, Object value)

2. 获取值

Object get(Object obj)

3. 忽略访问权限修饰符的安全检查:

obj.setAccessible(true):暴力反射,访问d

——Constructor:构造方法

【创建对象】:

Constructor c=目标类Class.getConstructor(目标类的属性)

Object obj=c.newInstance(Object ... args:目标类的属性实例)

如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance()方法

——Method:方法对象:

【执行方法】:

Object invoke(Object obj, Object... args)

【获取方法名称】:

String getName:获取方法名

标签:反射,Java,String,...,Object,获取,Class
From: https://www.cnblogs.com/yhstsy/p/16919789.html

相关文章

  • 真的,Java并发编程入门看这个就够了
    Java并发编程学习之02Java并发编程入门指南(真的,Java并发编程入门看这个就够了)1.Java天生多线程importjava.lang.management.ManagementFactory;importjava.lang......
  • 真的,Java并发编程基础入门看这个就够了
    Java并发编程学习之02Java并发编程入门指南@目录1.Java天生多线程2.Java启动多线程实现方式2.1实现代码2.2Thread和Runnable的区别2.3start和run方法的区别3.Java......
  • Java学习四
    一.小结1.循环语句有三类:while循环,do-while循环和for循环2.循环中需要重复执行的语句所构成的整体称为循环体3.循环体执行一次称为循环的一次迭代4.无限循环是指循环语......
  • Java理论(一)
    什么是javaJava是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言......
  • Java原型模式大大节省资源测试
    但你需要创建大量相同对象的时候,使用原型模式吧!原型模式    克隆猫猫:publicclassCloneCatimplementsCloneable{publicCloneCat(){try{......
  • Java实现平衡二叉搜索树(AVL树)
    上一篇实现了二叉搜索树,本章对二叉搜索树进行改造使之成为平衡二叉搜索树(BalancedBinarySearchTree)。不平衡的二叉搜索树在极端情况下很容易退变成链表,与新增/删除/......
  • java中级考试
    选择2020分判断1010分解答55分程序页面+综合45分 第2章Css选择器CSS规则由三部分构成:选择符,属性和属性值   选择符{属性:属性值;属性:属性值;...}CSS......
  • Java工具库Guava的数学运算常用方法示例代码
    场景Java核心工具库Guava介绍以及Optional和Preconditions使用进行非空和数据校验:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127683387为什么使用Gu......
  • 如何通过Java 合并和取消合并 Excel 单元格
    在整理Excel中的数据时,我们不可避免地需要合并和取消合并单元格。同时,如果需要创建跨列或行的标题,我们可以合并Excel单元格以在电子表格中轻松完成此操作。合并单元格......
  • java执行流程
    编译:是指使用Java编译器对源文件进行错误排査的过程,编译后将生成后缀名为.class的字节码文件,不像C语言那样生成可执行文件。Java解释器负责将字节码文件翻译成具体......