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

相关文章
|
7天前
|
Java
【专栏】Java中的反射机制与应用实例
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
3天前
|
Java
JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识
JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识。入坑JAVA因它的面向对象特性、平台无关性、强大的标准库和活跃的社区支持。
14 2
|
6天前
|
Java 测试技术
滚雪球学Java(24):Java反射
【4月更文挑战第13天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
14 0
滚雪球学Java(24):Java反射
|
8天前
|
设计模式 Java Spring
来聊聊Java的反射机制(下)
来聊聊Java的反射机制(下)
7 0
|
8天前
|
Java 编译器 Spring
来聊聊Java的反射机制(上)
来聊聊Java的反射机制
10 0
|
11天前
|
Java
Java 反射
Java 反射
|
11天前
|
设计模式 Java 索引
由反射引出的Java动态代理与静态代理
由反射引出的Java动态代理与静态代理
14 0
|
11天前
|
存储 Java Shell
深入剖析Java中的反射,由浅入深,层层剥离!
深入剖析Java中的反射,由浅入深,层层剥离!
14 1
|
13天前
|
Java API Spring
Java基础教程(13)-Java中的反射和动态代理
【4月更文挑战第13天】Java反射机制允许程序在运行时获取类的信息并调用其方法。Class类是基础,提供获取类属性和方法的能力。通过Class对象,可以操作实例字段和方法,如getField、getDeclaredField等。动态代理是Java提供的创建接口实例的机制,其中JDK动态代理需目标类实现接口,而Cglib则可代理未实现接口的类。动态代理涉及Proxy和InvocationHandler接口。
|
16天前
|
监控 Java 开发者
掌握 Java 反射和动态代理
【4月更文挑战第19天】Java反射和动态代理提供强大功能和灵活性。反射允许运行时检查和操作类,获取类信息、动态调用方法,但可能带来性能损失和降低代码可读性。动态代理则用于创建代理对象,实现透明性和横切关注点分离,常用于日志、权限检查等。两者结合能实现更复杂功能。掌握这些技术能提升代码的灵活性和可扩展性,但也需注意性能和可读性。通过学习和实践,能更好地构建高效软件系统。