Java反射——动态加载类

一、静态加载类

下面通过new关键词直接创建的对象就是静态加载类,在编译时刻就需要加载所有的可能使用的类。

class Office{
 
    public static void main(String[] args){
 
        // new创建的对象 是静态加载类,在编译时刻就需要加载所有的可能使用的类。
        if ("Word".equals(args[0])) {
            Word word = new Word;
            word.start();
        }
 
        if ("Excel".equals(args[0])) {
            Excel excel = new Excel();
            excel.start();
        }
    }
}

我们通过javac来编译一下,这时就会报错。说Word和Excel对象找不到。

二、动态加载类

下面通过forname函数得到的这个类,只会在运行时才加载。

class OfficeBetter{
 
    public static void main(String[] args) {
        try{
            // 动态加载类,在运行时刻加载
            Class c = Class.forName(args[0]);
            // 通过类类型,创建该类对象
            OfficeAble o = (OfficeAble)c.newInstance();
            o.start();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

为了实现演示效果,这里我们有编写了一个接口OfficeAble 。

public interface OfficeAble{
    void start();
}

此时,我们分别编译OfficeBetter.java是不会报错的。然后我们编写实现OfficeAble接口的Word类。

public class Word implements OfficeAble{
     
    public void start(){
        System.out.println("word...start");
    }
 
}

然后编译Word.java文件。

此时我们在控制台输入:

14_20170923173043_834.png

运行时才会加载Word类。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  •   在Java当中,加载类分为动态加载和静态加载,其中,在编译时刻加载类叫做静态加载类,在运行时刻加载类叫做动态加...
    琼珶和予阅读 4,266评论 1 0
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 5,438评论 0 6
  • 这篇文章写的很容易理解,mark一下 原文地址: http://www.cnblogs.com/dowinning...
    竿牍阅读 1,630评论 0 1
  • 没有具体代码展示,只做思路分享,有更好的思路,欢迎交流。查看原文 背景介绍 字符串的相似度算法在许多领域都能经常用...
    ioiogoo阅读 9,804评论 0 1
  • 路得说:“不要逼我撇你而去。你往哪里去,我也要往哪里去;你住在哪里,我也要住在哪里;你的同胞就是我的同胞,你的上帝...
    恩言恩语阅读 6,293评论 0 1

友情链接更多精彩内容