|
1
2
我想到了单元测试。如果要测试私有方法,但不公开该方法或使用
|
|
2
1
一种是将对象持久化到数据库。E、 Hibernate确实使用反射,在某些情况下,比如对象的ID可能是私有成员,带有私有setter/getter,因为它在Java域中没有用处。但是它在数据库中是必需的,所以Hibernate在后台设置/获取它,并使用它来确定对象标识。 另一种方法是为设计糟糕的遗留代码编写初始单元测试,因为没有单元测试来保护自己,所以不能直接开始重构。在这种情况下,如果其他方法(如 Working Effectively with Legacy Code )无法帮助您,反射可能是开始使用可维护代码的最后手段。 |
|
|
3
1
我猜使用它的一个大领域是在托管环境的上下文中,也就是说,当一个框架或环境应该提供一些工具,并且可能需要访问私有数据时。 公共/私有访问修饰符是 应用程序设计级别 一个领域不应该为了让一个框架高兴而公开。例如,Hibernate这样的框架可以管理 对象持久性 , 依赖注入 框架,它可以在私有字段中注入数据,或者更一般地 应用服务器 不管访问修饰符是什么,都可以工作。 更普遍地说,这属于 元编程 . 有些代码在不预先知道其他对象的结构的情况下动态地检查和修改它们。 |
|
4
0
分析或监视可能是对私有成员和函数使用反射的有用原因。例如,如果您想知道数据库连接实际建立的频率,可以监视对私有数据库的访问
这可以用AOP做得更好,但是,如果试图让AOP被接受在政治上太困难,那么在开发过程中进行反思可以帮助解决问题。 |
|
|
5
0
您还可以使用反射根据输入类型参数(如enum)调用方法,从而基本上替换switch语句。 例如:
|
|
|
6
0
调试和分析马上就浮现在脑海中——它们需要能够更完整地查看对象的内部。 垃圾回收是另一种方式——是的,JVM内置了垃圾回收器,但必须有人编写代码,虽然大多数JVM不是用java编写的,但没有理由不能这样做。 |
|
|
JBryanB · 如何从基本抽象类访问类属性 2 年前 |
|
|
Gabe Tucker · 无法在golang中分配接口对象指针 3 年前 |
|
|
jkone27 · F#-在编译时从字符串生成简单的空类型 8 年前 |
|
|
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 8 年前 |
|
|
Randall Flagg · 访问propertyinfo中的属性 8 年前 |
|
|
Kacper · 在反映的全名和成员c后的“*”中,“+”是什么意思# 8 年前 |
|
|
tobeypeters · 反射铸造 8 年前 |
|
|
myst02 · 如何在另一个方法之后调用该方法? 8 年前 |