new关键字和newInstance() 的区分
Java 中 new 关键字和 newInstance() 的区分 Java 中的 new 关键字和 newInstance() 方法都是用于创建对象的,但是它们之间有着本质的区别。理解这两者的区别对于 Java 编程尤其重要。 new 关键字是 Java 的一个保留字,用于创建一个新的对象。例如,`A a = new A();` 就是使用 new 关键字创建了一个 A 类的对象。new 关键字的作用是创建一个新的对象,并且将其初始化。 而 newInstance() 方法则是 Class类的一个方法,用于创建一个新的对象。例如,`A a = (A) Class.forName("pacage.A").newInstance();` 就是使用 newInstance() 方法创建了一个 A 类的对象。newInstance() 方法的作用是加载一个类,并创建一个新的对象。 从本质上讲,new 关键字和 newInstance() 方法的区别在于创建对象的方式不同。new 关键字是直接创建一个新的对象,而 newInstance() 方法则是使用类加载机制来创建对象。 使用 newInstance() 方法可以提供更好的灵活性和降耦的手段。例如,在工厂模式中,newInstance() 方法经常用于创建对象,从而实现了软件的可伸缩、可扩展和可重用等软件设计思想。 在 JVM 的角度看,使用关键字 new 创建一个类的时候,这个类可以没有被加载。但是使用 newInstance() 方法的时候,就必须保证这个类已经加载和连接了。这两个步骤正是 Class 的静态方法 forName() 所完成的。 因此,newInstance() 方法实际上是把 new 这个方式分解为两步,即首先调用 Class 加载方法加载某个类,然后实例化。这样分步的好处是显而易见的。 new 关键字和 newInstance() 方法都是创建对象的方式,但是它们之间有着本质的区别。new 关键字是一种强类型的方式,相对高效,可以调用任何 public 构造,而 newInstance() 方法是一种弱类型的方式,低效率,只能调用无参构造。