You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.3 KiB
34 lines
1.3 KiB
5 years ago
|
---
|
||
|
深入理解 反射
|
||
|
---
|
||
|
|
||
|
### 目录
|
||
|
|
||
|
1. 反射的定义以及基本使用
|
||
|
2. JVM 是如何实现反射的?
|
||
|
3. 反射性能开销体现在哪?
|
||
|
4. 如何优化反射性能开销?
|
||
|
5. 参考
|
||
|
|
||
|
### 反射的定义以及基本使用
|
||
|
|
||
|
反射是 Java 语言中一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。表现为如下两点:
|
||
|
|
||
|
1. 对于任意一个类,都能知道这个类的所有属性和方法
|
||
|
2. 对于任意一个对象,都能调用它的任意一个属性和方法
|
||
|
|
||
|
反射涉及的 API 分为三类:Class、Member(Field、Method、Constructor)、Array and Enumerated。详细的基本使用可以参考我以前写的文章 [反射基础使用](https://github.com/Omooo/Android-Notes/blob/master/blogs/Java/%E5%8F%8D%E5%B0%84.md),或者翻阅一下 [官方文档](https://docs.oracle.com/javase/tutorial/reflect/member/index.html)。
|
||
|
|
||
|
### JVM 是如何实现反射的?
|
||
|
|
||
|
|
||
|
|
||
|
### 参考
|
||
|
|
||
|
[https://docs.oracle.com/javase/tutorial/reflect/](https://docs.oracle.com/javase/tutorial/reflect/)
|
||
|
|
||
|
[JVM 是如何实现反射的?](https://time.geekbang.org/column/article/12192)
|
||
|
|
||
|
[Java反射原理简析](http://fanyilun.me/2015/10/29/Java%E5%8F%8D%E5%B0%84%E5%8E%9F%E7%90%86/)
|
||
|
|
||
|
[关于反射调用方法的一个log](https://www.iteye.com/blog/rednaxelafx-548536)
|