Skip to content

Commit

Permalink
Merge pull request CyC2018#1016 from Xunzhuo/patch-2
Browse files Browse the repository at this point in the history
fix markdown  errors
  • Loading branch information
CyC2018 authored Nov 17, 2020
2 parents 236b85a + fe463db commit 5e68e04
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions notes/Java 基础.md
Original file line number Diff line number Diff line change
Expand Up @@ -1334,19 +1334,19 @@ Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect

**反射的优点:**

* **可扩展性** :应用程序可以利用全限定名创建可扩展对象的实例来使用来自外部的用户自定义类
* **类浏览器和可视化开发环境** :一个类浏览器需要可以枚举类的成员可视化开发环境 IDE可以从利用反射中可用的类型信息中受益以帮助程序员编写正确的代码
* **调试器和测试工具** : 调试器需要能够检查一个类里的私有成员测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义以确保一组测试中有较高的代码覆盖率
- **可扩展性** :应用程序可以利用全限定名创建可扩展对象的实例来使用来自外部的用户自定义类
- **类浏览器和可视化开发环境** :一个类浏览器需要可以枚举类的成员可视化开发环境 IDE可以从利用反射中可用的类型信息中受益以帮助程序员编写正确的代码
- **调试器和测试工具** : 调试器需要能够检查一个类里的私有成员测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义以确保一组测试中有较高的代码覆盖率

**反射的缺点:**

尽管反射非常强大但也不能滥用如果一个功能可以不用反射完成那么最好就不用在我们使用反射技术时下面几条内容应该牢记于心

* **性能开销** :反射涉及了动态类型的解析所以 JVM 无法对这些代码进行优化因此反射操作的效率要比那些非反射操作低得多我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射
- **性能开销** :反射涉及了动态类型的解析所以 JVM 无法对这些代码进行优化因此反射操作的效率要比那些非反射操作低得多我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射

* **安全限制** :使用反射技术要求程序必须在一个没有安全限制的环境中运行如果一个程序必须在有安全限制的环境中运行 Applet那么这就是个问题了
- **安全限制** :使用反射技术要求程序必须在一个没有安全限制的环境中运行如果一个程序必须在有安全限制的环境中运行 Applet那么这就是个问题了

* **内部暴露** :由于反射允许代码执行一些在正常情况下不被允许的操作比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用这可能导致代码功能失调并破坏可移植性反射代码破坏了抽象性因此当平台发生改变的时候代码的行为就有可能也随着变化
- **内部暴露** :由于反射允许代码执行一些在正常情况下不被允许的操作比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用这可能导致代码功能失调并破坏可移植性反射代码破坏了抽象性因此当平台发生改变的时候代码的行为就有可能也随着变化


- [Trail: The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/index.html)
Expand Down

0 comments on commit 5e68e04

Please sign in to comment.