Java反射
遇到某个类的某个成员变量、方法或是属性是私有的或是只对系统应用开放,这时候就可以利用Java的反射机制通过反射来获取所需的私有成员或是方法。
https://www.jianshu.com/p/9be58ee20dee
这篇博客讲了反射里面主要的类。和spring4.x书中提到的一样,可以对照阅读。
spring4.x书上提到需要用setAccessible(boolean access)方法来取消java语言检查,否则会抛出IllegalAccessException。如果Jvm安全管理器设置了相应的安全机制,那么调用该方法会抛出SecurityException。
下面是JDK手册,中文翻译都是机翻,这里我能理解意思但后面三行也不知道如何用中文表达清楚所以就暂时放英文了。
public void setAccessible(boolean flag)
throws SecurityException
为这个对象设置 accessible
标志指定的布尔值。值true
表明反射的对象应执行Java语言访问检查。值 false
表明反射的对象应执行Java语言访问检查。
First, if there is a security manager, its checkPermission
method is called with a ReflectPermission("suppressAccessChecks")
permission.
A SecurityException
is raised if flag
is true
but accessibility of this object may not be changed (for example, if this element object is a Constructor
object for the class Class
).
A SecurityException
is raised if this object is a Constructor
object for the class java.lang.Class
, and flag
is true.
今日完成
今天上午把所找到的bug都解决了。api的部分也没啥问题了。导师让我下午自己学习,之后再安排新的任务。所以下午看了spring4.x书里面loC容器部分,对于反射的部分仔细了解了一下。今天调bug效率很高,但是看书有点看不进去,很多地方的概念很抽象,读的很累,框架作为生成对象的工厂,里面逐级分层后一些内容中文翻译过来反而不好理解。后续这本书读完不理解的地方还需要找合适的英文文稿来对照。
明日任务
导师如果暂时没有新的任务的话,我就继续上星期自己做着练习的项目了。进行到了IoC容器的操作部分。