Java语言有好些个名词,让人望而生畏。
上智不教即知,下愚虽教无益,中庸之人,不教不知。
人的天性中就有一点对未知的恐惧。
刚开始不了解,也没认真看,发现好难呀;等,静下心来自己研究,再看其实不难,发现都是纸老虎,不堪一击。
今天就来分析一下反射:Reflection
看一下维基百科的解释:
在诸如Java之类的面向对象的程序设计语言中,反射允许在程序运行期间访问 类、接口、字段和方法,而不必在编译期间知道接口、字段或者方法的名称。
反射也允许实例化对象和调用方法。
总结三点:
第一:反射可以获取类、接口、字段和方法的信息。
第二:不止new可以创建对象,反射也可以实例化对象。
第三:通过反射实现对方法的调用。
对于创建对象或者调用方法:正常的步骤是先用new关键词,造一个对象,然后再使用此对象的引用去调用方法,这是正常的套路。
反射就是不按正常套路来,但是殊途同归,本来可以一步到位的东西,他要分几个详细的步骤或者绕个弯走。而他的先获取Class类对象,再去创建对象仿佛就是分步走。
然后通过Class类对象获取Method,然后通过Method的invoke方法调用对象的方法就是在绕个弯。