首页 > 代码库 > Java-反射之动态加载类
Java-反射之动态加载类
在Java当中,加载类分为动态加载和静态加载,其中,在编译时刻加载类叫做静态加载类,在运行时刻加载类叫做动态加载类。
产生Class对象的方式中,有一个是Class.forName("类的全称"),这个不仅仅表示类的类类型,而且还表示了动态加载类。
1 package com.example.demo; 2 3 public class Demo { 4 public static void main(String[] args) { 5 if (args[0].equals("word")) { 6 Word word = new Word(); 7 word.start(); 8 } 9 if (args.equals("Excel")) { 10 Excel excel = new Excel (); 11 excel.start(); 12 } 13 } 14 }
比如说如上代码:如果我们不创建Word类和Excel类的话,我们会发现这段代码不能通过编译,这是因为new方式创建对象是通过静态加载类的,在编译的时候把所有可能要用到的类加载进来,不论以后到底用不用它。这种方式有一个弊端:那就是我们必须把所有可能到的类加载进来,一旦发现有一个类没有被加载进来,其他的类就不能使用。
而动态加载则是,需要使用哪个类,我们就加载哪个类,不必要把所有的类加载进来。
1 try { 2 //动态加载类,在运行时刻进行加载,编译不会报任何错误 3 Class c1 = Class.forName(args[0]); 4 //通过类类型来创建类的对象--我想要加载的类必须都符合一个标准,也就是说要实现统一的接口 5 OfficeAble officeAble = (OfficeAble)c1.newInstance(); 6 } catch (ClassNotFoundException e) { 7 // TODO Auto-generated catch block 8 e.printStackTrace(); 9 }
Java-反射之动态加载类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。