Java面试复习9 Java中的反射和动态代理
声明:本面试复习都基于一本未署名的Java面试宝典所述,根据自己的理解写出了这一专栏的复习博客
-
说说你对Java反射的理解
按照我的个人理解,Java中的反射其实就是能够让程序在执行期间获取某一个特定类中的各种信息,包括类名,属性,方法,类的构造器属性,并且能够操控这些方法和属性。
这种对于反射的利用,使得程序在执行期间就可以动态的获取类中的各种信息并能够直接在程序运行时操控获取类中的属性和方法。因此它又被视为是动态语言的关键
通过反射获取运行时类的完整结构 Field、 Method、 Constructor、 Superclass、 Interface、 Annotation 实现的全部接口 所继承的父类 全部的构造器 全部的方法 全部的Field 使用反射可以取得: 1.实现的全部接口 public Class<?>[] getInterfaces() 确定此对象所表示的类或接口实现的接口。 2.所继承的父类 public Class<? Super T> getSuperclass() 返回表示此 Class 所表示的实体(类、接口、基本类型)的父类的Class。 3.全部的构造器 public Constructor<T>[] getConstructors() 返回此 Class 对象所表示的类的所有public构造方法。 public Constructor<T>[] getDeclaredConstructors() 返回此 Class 对象表示的类声明的所有构造方法。 Constructor类中: 取得修饰符: public int getModifiers(); 取得方法名称: public String getName(); 取得参数的类型: public Class<?>[] getParameterTypes(); 4.全部的方法 public Method[] getDeclaredMethods() 返回此Class对象所表示的类或接口的全部方法 public Method[] getMethods() 返回此Class对象所表示的类或接口的public的方法 Method类中: public Class<?> getReturnType()取得全部的返回值 public Class<?>[] getParameterTypes()取得全部的参数 public int getModifiers