Class.forName(“类的全称”);
不仅表示类的类类型,还代表了动态加载类
请大家区分编译、运行
编译时刻加载类时静态加载类、运行时刻加载类时动态加载类

编写一个Office.java文件,在类中创建2个不存在的对象Word和Excel,

public class Office {public static void main(String[] args) {//new 创建对象 是静态加载类,//在编译时刻就需要加载所有的可能是用到的类//动态加载可以解决此问题if ("Word".equals(args[0])) {Word w = new Word();w.start();}if ("Excel".equals(args[0])) {Excel e = new Excel();e.start();}}
}


运行javac编译Office.java文件,由于Word和Excel类都不存在,因此抛出以下异常。

创建Word类,提供start方法,编译Word.java
Word.java

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

编译

javac Office.java


Word
类不抛出异常了,Excel类不存在,仍然不能进行编译。
从上面可以看出,静态加载类,在编译时如果有一个类不存在,就会报错。

动态加载类可以解决此问题,也就是在编译时,不报错,在运行时,使用到具体类,如果该类不存在,就会报错

动态加载类
创建一个标准接口
IOfficeAndWord.java

public interface IOfficeAndWord {public void start();
}

Word和Excel类都实现这个接口的方法
Word.java

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

Excel.java

public class Excel implements IOfficeAndWord {@Overridepublic void start() {System.out.println("excel..start");}
}
public class OfficeBetter {public static void main(String[] args) {//动态加载类,在运行时时刻加载try {Class c = Class.forName(args[0]);//通过类类型,创建该类对象,返回类型为该对象的类型IOfficeAndWord oaw = (IOfficeAndWord) c.newInstance();oaw.start();} catch (Exception e) {e.printStackTrace();}}
}

依次编译这几个类,

javac OfficeBetter.java
javac Word.java
javac Excel.java

运行OfficeBetter 类中的Word/Excel的方法

java OfficeBetter Word
java OfficeBetter Excel


如果,Excel不实现OfficeBetter 接口的方法,运行时会抛出异常

Java 动态加载类相关推荐

  1. Java动态加载类(对反射的基本理解)

    目录 基本概念 演示 基本概念 这里演示下Java的动态加载类.因为在编译的时候,加载类是静态加载,运行时加载是动态加载. 在此我对反射有了如下的理解: 如果有一个class A,可以使用new A( ...

  2. java动态加载类 框架_java运用RMI框架类的动态加载不成功

    最近在看<java网络编程精解>,第11章中用RMI动态加载类,可怎么试都不成功,求大神解答 1. 我先在C盘下启动了rmiregistry注册表,如果部署成功注册表应该会从codebas ...

  3. Java运行时动态加载类之ClassLoader加载class及其依赖jar包

    需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader. 1.xml配置文件 <?xml ...

  4. Java运行时动态加载类之ClassLoader

    需求场景:动态加载类ClassLoaderd,在xml文件中配置加载类名称和方法,: 一.准备 1)在D:\\tmp\\目录下配置a.xml文件: <?xml version="1.0 ...

  5. Java反射-静态/动态加载类

    title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...

  6. Java利用反射动态加载类实战

    package com.web.common.utility.reflector; import java.io.Serializable; import java.lang.reflect.Cons ...

  7. java动态加载jar时,jar中还有第三方jar无法加载的解决方法

    java动态加载jar时,jar中还有第三方jar无法加载的解决方法 当java插件化开发时,即一个java程序在运行的情况下动态加载另一个jar,网上大多数的方法如下 public static v ...

  8. java重新加载类_java重新加载类的探寻

    java重新加载类的探寻 首先上结论:java类加载器不支持重新加载类.如果想重新加载,那就新建一个类加载器. 接下来慢慢讲: 项目背景 在近日做的一个项目中,有一个动态获取用户输入的代码,并进行运行 ...

  9. echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava

    [ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...

最新文章

  1. CentOS5.6系统下mysql5安装
  2. mybatis自动生成代码工具
  3. Node.js EventEmitter
  4. 第07章:MongoDB-CRUD操作--文档--创建
  5. linux的ftp下载假死,记一次commons-net FTP上传下载卡死
  6. 计算机计算资源估计,项目时间管理中的计算题三点估算和关键路径法
  7. 普通路由器改4g路由器_4G工业路由器助力叉车锂电池监测
  8. Access链接表的使用
  9. ‘chromedriver.exe‘ executable needs to be in PATH.解决办法
  10. js中比較好的继承方式
  11. TTL和CMOS的区别
  12. PPT镂空字体、填充文字、图片字、拆分字制作
  13. GB2312编码理解
  14. 二叉树前中后序遍历(循环实现)
  15. win10很多软件显示模糊_win10系统字体模糊的解决方法
  16. JAVA超市管理系统
  17. itunes一直显示正在验证iphone恢复_超全面iPhone实用技巧汇总,有用收藏
  18. 开源 == 文化:红帽社区开放日图文回顾
  19. 2023秋招--游卡--游戏客户端--二面面经
  20. 【Statistics】HYPOTHESIS TEST(SIGNIFICANCE TEST)

热门文章

  1. 深度学习(2)--常见概率分布(2)
  2. caffe安装 cuda安装 opencv安装 cudnn安装 python相关依赖库安装
  3. 用手机「3D探店」是种什么体验?
  4. 可用性SLA还不懂?看完这个故事就懂了
  5. ODPS2.0重装上阵,优化提升SQL语言表达能力
  6. 我们和全球的朋友一起回家
  7. pandas指南:做更高效的数据科学家
  8. 开启数据科学职业生涯的8个基本技巧
  9. 新功能:在负载均衡SLB控制台上查看DDoS安全防护阈值
  10. ffmpeg开发指南(使用 libavformat 和 libavcodec)