Java语言中的反射的概念和相关的类

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第21天,点击查看活动详情

概念

Java开发者编写的任何Java源文件都需要经过编译,才能生成字节码文件(.class文件)。对于java虚拟机而言,装载到其中的字节码文件是一个类型为Class类的对象。(不是关键字class噢!) - 反射就是把普通Java类中的各种成分映射成对应的Java类。如一般的Java类包括方法、构造方法、属性字段以及修饰符信息,而在java语言中,Method、Constructor、Field以及Modeifier和这些成分一一对应。

308fa8566167291e7280c31714b6fce.jpg - 在Java语言中,有关反射的大部分类和接口定义在软件包java.lang.reflect中。软件包java.lang.reflect中类和接口之间的层结构,如图:(字丑了点)

7104fc747b7e92e00c99a1cb67b31ae.jpg

与反射相关的类

Class类

Java程序在运行过程中,系统一直对全部的Java对象进行时类型标识(RTTI)。该信息记录了每个对象所属的类。Java虚拟机根据运行时类型标识自动选择正确的方法运行。Class类正是用来保存这些类型信息的类。Class类封装一个对象和接口运行时的状态,当装载类时,会自动创建Class类型的对象。

举例几个Class类中给出的主要方法: - T cast(Object obj):将一个对象强制转换成此Class对象表示的类和接口。 - static Class<?>forName(String className):返回与带有给定字符串名的类或接口相关联的Class对象。 - Field getFild(String name):返回一个Field对象,它反映此Class对象所表示的类或接口的指定公共成员字段 - ······

修饰符类Modifier

一般类中的属性、构造方法、一般的方法都应该被public、private、protected、static等修饰符修饰。而Modifier类提供了static方法和常量,对类的成员访问修饰符进行解码。修饰符集被表示为整数,用不同的位置表示不同的修饰符。

为了判断是否被某些修饰符修饰,Modifier提供了一些方法: - static boolean isXy(int mod):如果整数参数包括xy修饰符,则返回true,否则返回flase。其中xy可以是abstract、final、interface、native、private、protected、public、static、strictfp、syncchronized、transient、volatile·······。Xy和xy一样,首字母大写即可。 - Redlect类定义修饰符串的静态方法代码:

```java public static String getModifierStr(){ public static boolean isPublic(int mod) { //被public修饰 return (mod & PUBLIC) != 0; }

public static boolean isPrivate(int mod) { //被private修饰 return (mod & PRIVATE) != 0; } public static boolean isProtected(int mod) { //被protected修饰 return (mod & PROTECTED) != 0; }

public static boolean isStatic(int mod) { //被static修饰 return (mod & STATIC) != 0; } //。。。。大家应该能找到代码规律,就不一一展示了 } ```

扫描二维码关注公众号,回复: 16861712 查看本文章

其他相关类

与反射相关的类还有很多,就不一一展示了。比如:AccessibleObject类、Field类、Constructor类、Methood类、Reflect类等。。。。,有兴趣可以自己去看一下

猜你喜欢

转载自blog.csdn.net/y943711797/article/details/132978089