new | newInstance() | |
加载方式 | 主要作用是在内存中生成一个实例,这个类可以没有提前加载到内存中 | 在内存中生成一个实例,在使用前需保证 1.类被加载到内存中 2.类已经被链接 可以用Class.forName()方法 |
构造方法 | 可以调用任何构造方法 | 只能调用无参构造方法 |
执行效率 | new关键字是强类型,效率较高 | newInstance()是弱类型的,效率相对较低 |
使用地点 | 一般程序中 | 一般用于框架中,工厂模式中等等 |
假设定义了接口Door,类WoodenDoor实现Door,可以在程序中这样写,Door door = new WoodenDoor() 如果出现新的类型,则需要改动代码。 如果使用newInstance()则可以在不改动代码的情况下新增或替换类型。具体方法是把Door的具体实现类名放到配置文件中,通过newInstance()生成实例,如果想要改变成另一种Door的时候,只需要修改配置文件就可以。Door door=(Door)Class.forName(className).newInstance(); 在配合依赖注入的方法,就提高了软件的可伸缩性,可扩展性。 |
参考https://www.cnblogs.com/yunger/p/5793669.html 和https://www.cnblogs.com/bandaobudaoweng/p/9029192.html