Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
风中奇缘kb
CS-Notes
提交
5e68e04e
C
CS-Notes
项目概览
风中奇缘kb
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
5e68e04e
编写于
11月 18, 2020
作者:
C
CyC2018
提交者:
GitHub
11月 18, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1016 from Xunzhuo/patch-2
fix markdown errors
上级
236b85af
fe463db0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
6 deletion
+6
-6
notes/Java 基础.md
notes/Java 基础.md
+6
-6
未找到文件。
notes/Java 基础.md
浏览文件 @
5e68e04e
...
@@ -1334,19 +1334,19 @@ Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect
...
@@ -1334,19 +1334,19 @@ Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect
**反射的优点:**
**反射的优点:**
*
**可扩展性**
:应用程序可以利用全限定名创建可扩展对象的实例,来使用来自外部的用户自定义类。
-
**可扩展性**
:应用程序可以利用全限定名创建可扩展对象的实例,来使用来自外部的用户自定义类。
*
**类浏览器和可视化开发环境**
:一个类浏览器需要可以枚举类的成员。可视化开发环境(如 IDE)可以从利用反射中可用的类型信息中受益,以帮助程序员编写正确的代码。
-
**类浏览器和可视化开发环境**
:一个类浏览器需要可以枚举类的成员。可视化开发环境(如 IDE)可以从利用反射中可用的类型信息中受益,以帮助程序员编写正确的代码。
*
**调试器和测试工具**
: 调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。
-
**调试器和测试工具**
: 调试器需要能够检查一个类里的私有成员。测试工具可以利用反射来自动地调用类里定义的可被发现的 API 定义,以确保一组测试中有较高的代码覆盖率。
**反射的缺点:**
**反射的缺点:**
尽管反射非常强大,但也不能滥用。如果一个功能可以不用反射完成,那么最好就不用。在我们使用反射技术时,下面几条内容应该牢记于心。
尽管反射非常强大,但也不能滥用。如果一个功能可以不用反射完成,那么最好就不用。在我们使用反射技术时,下面几条内容应该牢记于心。
*
**性能开销**
:反射涉及了动态类型的解析,所以 JVM 无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射。
-
**性能开销**
:反射涉及了动态类型的解析,所以 JVM 无法对这些代码进行优化。因此,反射操作的效率要比那些非反射操作低得多。我们应该避免在经常被执行的代码或对性能要求很高的程序中使用反射。
*
**安全限制**
:使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如 Applet,那么这就是个问题了。
-
**安全限制**
:使用反射技术要求程序必须在一个没有安全限制的环境中运行。如果一个程序必须在有安全限制的环境中运行,如 Applet,那么这就是个问题了。
*
**内部暴露**
:由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用,这可能导致代码功能失调并破坏可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。
-
**内部暴露**
:由于反射允许代码执行一些在正常情况下不被允许的操作(比如访问私有的属性和方法),所以使用反射可能会导致意料之外的副作用,这可能导致代码功能失调并破坏可移植性。反射代码破坏了抽象性,因此当平台发生改变的时候,代码的行为就有可能也随着变化。
-
[
Trail: The Reflection API
](
https://docs.oracle.com/javase/tutorial/reflect/index.html
)
-
[
Trail: The Reflection API
](
https://docs.oracle.com/javase/tutorial/reflect/index.html
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录