缺点
破坏封装性
反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题
性能开销
由于反射设计动态解析的类型,因此无法执行某些jvm优化,反射操作的性能比非反射操作的性能要差,应该在性能敏感的应用且频繁调用的代码中避免
动态加载类
面试题: 如何在java程序运行时不停机动态加载一个函数进来
new 和 newinstaince的区别
1 创建前提不同: newInstance 创建类是这个类已经加载过且已经连接,new创建类是则不需要这个类加载过
2 创建对象的方式不同: newInstance使用类的加载机制, new则是直接创建一个类
3 创建对象类型不同: newInstance 弱类型(GC回收对象的限制条件很低,容易被回收),低效率只能调用无参构造函数<br> new 强类型 (GC不会自动回收,只有所有的指向对象的引用被移除才会被回收,若对象生命周期已经结束,但是引用没有被移除,经常会导致内存溢出)