建议一百零一:注意Class类的特殊性
Java语言是先将Java源文件编译成后缀为class的字节文件,然后通过ClassLoader机制把这些类文件加载到内存中,最后生成实例执行。
Java使用一个元类(MetaClass)来描述加载到内存中的类数据,这就是Class类,它是一个描述类的类对象。
Class类无构造函数,可以描述基本类型,其对象都是单例模式。一个Class的实例对象只描述一个类。
建议一百零二:适时选择getDeclaredXXX和getXXX
getXXX方法获得的是所有public访问级别的方法,包括从父类继承的方法。
getDeclaredXXX获得是的自身类的所有方法,不受限与访问权限。
建议一百零三:反射访问属性或方法时将Accessible设置为true
建议一百零四:使用forName动态加载类文件
建议一百零五:动态加载不适合数组
通过反射操作数组使用Array类
// 动态创建数组
String[] str = (String[]) Array.newInstance(String.class,8);
建议一百零六:动态代理可以使代理模式更加灵活
建议一百零七:使用反射增加装饰模式的普适性
建议一百零八:反射让模板方法模式更加强大
建议一百零九:不需要太多关注反射效率
建议一百一十:提倡异常封装