Java工程师必知词汇:反射

简介: Java的最大的特征:反射机制,也是Java的精髓。所有技术实现的目标只有一点:可复用性(可重用性)。

|名词定义|

Java的最大的特征:反射机制,也是Java的精髓。所有技术实现的目标只有一点:可复用性(可重用性)。
对于反射技术首先考虑的是“反”与“正”的操作,所谓的“正”操作指的是使用一个类时,一定要先导入程序所在的包,而后根据类进行对象的实例化,并依靠对象调用类中的方法。而“反”则是根据实例化对象反推出其类型。
正向操作

1581588142648_2926FE10-DB9D-4B25-8BE5-C4F3FC9B0758.png

反向操作
获取类信息:public final Class<?> getClass()
Class类对象的三种实例化模式
1.【Object类支持】Object类可以根据实例化对象获取Class对象。
public final Class<?> getClass();
特点:如果想获得Class类对象,就必须产生指定类对象后才可以获得。
2.【JVM直接支持】采用“类.class”的形式实例化
特点:如果想获得Class类对象,就必须导入程序对应的开发包;
3.【Class类支持】在Class类中提供有一个static加载类的方法:
public static Class<?> forName(String className)throws ClassNotFoundException
特点:可以直接采用字符串的形式定义要使用的类型,并且程序中不需要编写任何的import语句。

|反射可访问到的常用信息|

1581587636548_CDCE3A0C-2C16-4DC5-9400-7E8C04A2BA75.png

|反射机制常用的类|

Java.lang.Class;
Java.lang.reflect.Constructor;
Java.lang.reflect.Field;
Java.lang.reflect.Method;
Java.lang.reflect.Modifier;

|常见用途|

  1. 判定任意一个对象所属的类
  2. 构造任意一个类的对象
  3. 获取任意一个类内成员变量和方法
  4. 调用任意一个对象的方法
  5. 反射main方法
  6. 通过反射运行配置文件内容
  7. 通过反射越过泛型检查
  8. 生成动态代理

|优、缺点|

优点
1.能够在运行时动态获取类的实例,大大提高系统的灵活性和扩展性;
2.与Java动态编译相结合,可以实现无比强大的功能;
3.对于Java这种先编译再运行的语言,能够让我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码的链接,更加容易实现面向对象。
缺点
1.反射会消耗一定的系统资源,如果不需要动态地创建一个对象,建议不要用反射来做;
2.反射调用方法时可以忽略权限检查,可能会破坏封装性而导致安全问题。

|参考资料|

[1] 阿里云大学Java视频课程
[2] Java开发者
[3] http://c.biancheng.net/view/6907.html
[4] https://www.jianshu.com/p/64ffc65633ce
[5] https://blog.csdn.net/a745233700/article/details/82893076

相关文章
|
10月前
|
搜索推荐 算法 Java
2025 年互联网大厂校园招聘 JAVA 工程师笔试题及备考要点解析
本文针对互联网大厂校招Java工程师笔试题进行解析,涵盖基础知识、面向对象编程、数据结构与算法、异常处理及集合框架等核心内容。从数据类型、运算符到流程控制语句,从类与对象、继承多态到数组链表、排序算法,再到异常捕获与集合框架应用,结合实际案例深入剖析,助你系统掌握考点,提升应试能力。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
354 9
|
10月前
|
Java 数据库连接 API
互联网大厂校招 JAVA 工程师笔试题解析及常见考点分析
本文深入解析互联网大厂校招Java工程师笔试题,涵盖基础知识(数据类型、流程控制)、面向对象编程(类与对象、继承与多态)、数据结构与算法(数组、链表、排序算法)、异常处理、集合框架、Java 8+新特性(Lambda表达式、Stream API)、多线程与并发、IO与NIO、数据库操作(JDBC、ORM框架MyBatis)及Spring框架基础(IoC、DI、AOP)。通过技术方案讲解与实例演示,助你掌握核心考点,提升解题能力。
373 2
|
机器学习/深度学习 Java PyTorch
Java工程师如何理解张量?
刚接触AI和PyTorch,理解“张量(Tensor)”是入门关键。张量可类比为Java中的多维数组,但更强大,尤其在AI领域支持GPU加速、自动求导等特性。它不仅能高效存储数据,还能进行复杂运算,是深度学习的核心数据结构。掌握张量的维度、数据类型及GPU加速特性,对学习PyTorch至关重要。
388 3
|
Java 数据库连接 Spring
反射-----浅解析(Java)
在java中,我们可以通过反射机制,知道任何一个类的成员变量(成员属性)和成员方法,也可以堆任何一个对象,调用这个对象的任何属性和方法,更进一步我们还可以修改部分信息和。
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
303 9
Java——反射&枚举
|
监控 Java
Java基础——反射
本文介绍了Java反射机制的基本概念和使用方法,包括`Class`类的使用、动态加载类、获取方法和成员变量信息、方法反射操作、以及通过反射了解集合泛型的本质。同时,文章还探讨了动态代理的概念及其应用,通过实例展示了如何利用动态代理实现面向切面编程(AOP),例如为方法执行添加性能监控。
200 5
|
Java
Java的反射
Java的反射。
192 2
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
187 3
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
604 3
|
安全 Java 测试技术
🌟Java零基础-反射:从入门到精通
【10月更文挑战第4天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
254 2