获取这些信息有什么用?
反射是学习动态代理的基础
动态代理是很多流行框架中都有使用的思想。
举个栗子:
简略的代理
class 歌手 {
唱歌 () {
}
}
class 经纪人 {
唱歌( ) {
Class cls = 歌手.class;
Method method = cls.getMethod("唱歌);
//这里就得到了 歌手的某个方法,可以通过invoke(Method method)访问歌手的某个方法
}
}
栗子不是很恰当。就是想说明动态代理可以用到
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。