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

相关文章
|
2月前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
429 83
|
30天前
|
存储 Java
[Java]反射
本文详细介绍了Java反射机制的基本概念、使用方法及其注意事项。首先解释了反射的定义和类加载过程,接着通过具体示例展示了如何使用反射获取和操作类的构造方法、方法和变量。文章还讨论了反射在类加载、内部类、父类成员访问等方面的特殊行为,并提供了通过反射跳过泛型检查的示例。最后,简要介绍了字面量和符号引用的概念。全文旨在帮助读者深入理解反射机制及其应用场景。
21 0
[Java]反射
|
1月前
|
Java 程序员
在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。
【10月更文挑战第13天】在Java编程中,关键字不仅是简单的词汇,更是赋予代码强大功能的“魔法咒语”。本文介绍了Java关键字的基本概念及其重要性,并通过定义类和对象、控制流程、访问修饰符等示例,展示了关键字的实际应用。掌握这些关键字,是成为优秀Java程序员的基础。
24 3
|
1月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
48 3
|
2月前
|
安全 Java 索引
Java——反射&枚举
本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
65 9
Java——反射&枚举
|
1月前
|
安全 Java 测试技术
🌟Java零基础-反射:从入门到精通
【10月更文挑战第4天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
26 2
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
29天前
|
Java 程序员 编译器
|
2月前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
68 18
|
1月前
|
IDE Java 编译器
java的反射与注解
java的反射与注解
16 0
下一篇
无影云桌面