创建对象时,new和Class.newInstance() 以及Constructor.newInstance()区别,以及getDeclaredMethods和getMethods的区别
一、newInstance和new 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制。在使用newInstance()方法的时候,必须保证这个类已经加载并且已经连接了,而这可以通过Class的静态方法forName()来完成的。newInstance()在工厂模式里面用到。 Class.newInstance()的使用: Class.forName("A").newInstance(); 或者 A.class.newInstance(); 区别: (1)调用构造方法不同 new关键字能调用任何构造方法。 newInstance()只能调用无参构造方法。 (2)效率不一样 new关键字是强类型的,效率相对较高。 newInstance()是弱类型的,效率相对较低。 二、Class.newInstance()和Constructor.newInstance() 相同点:Class.newInstance()和Constructor.newInstance()都是通过反射来获取类的对象的。 不同点: (1)调用构造函数不同 Class.newInstance() 只能够调用 无参 的构造函数,即默认的构造函数; Constructor.newInstance() 可以根据传入的参数,调用 任意 构造构造函数。 (2)调用构造函数是否私有不同