初始化类生成实例时候newInstance()方法和new关键字除了方法关键字外主要有区别们区别于创建对象方式样前者使用类加载机制者创建新类会有两种创建对象方式主要考虑软件伸缩、扩展和重用等软件设计思想 Java工厂模式经常使用newInstance()方法来创建对象因此从要使用工厂模式上找具体答案 例: class c = Class.forName(Example); factory = (ExampleInterface)c.newInstance(); 其ExampleInterfaceExample接口写成下形式: String className = "Example"; class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 进步写成下形式: String className = readfromXMlConfig;//从xml 配置文件获得字符串 class c = Class.forName(className); factory = (ExampleInterface)c.newInstance(); 上面代码已经存Example类名称优点无论Example类变化上述代码变甚至更换Example兄弟类Example2 , Example3 , Example4……只要们继承ExampleInterface 从JVM角度看我们使用关键字new创建类时候类没有被加载使用newInstance()方法时候必须保证:1、类已经加载;2、类已经连接了而完成上面两步骤正Class静态方法forName()所完成静态方法调用了启动类加载器即加载java API加载器 现看出newInstance()实际上把new方式分解两步即首先调用Class加载方法加载某类实例化 样分步好处显而易见我们调用class静态加载方法forName时获得更好灵活性提供给了种降耦手段 用简单描述来区分new关键字和newInstance()方法区别: newInstance: 弱类型低效率只能调用无参构造 new: 强类型相对高效能调用任何public构造。
数据库连接时,Class.forName(driver).newInstance();解析
最新推荐文章于 2022-08-29 08:21:07 发布