Java-反射之动态加载类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-反射之动态加载类的主要内容,如果未能解决你的问题,请参考以下文章