Java 动态加载类
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 动态加载类相关推荐
- Java动态加载类(对反射的基本理解)
目录 基本概念 演示 基本概念 这里演示下Java的动态加载类.因为在编译的时候,加载类是静态加载,运行时加载是动态加载. 在此我对反射有了如下的理解: 如果有一个class A,可以使用new A( ...
- java动态加载类 框架_java运用RMI框架类的动态加载不成功
最近在看<java网络编程精解>,第11章中用RMI动态加载类,可怎么试都不成功,求大神解答 1. 我先在C盘下启动了rmiregistry注册表,如果部署成功注册表应该会从codebas ...
- Java运行时动态加载类之ClassLoader加载class及其依赖jar包
需求场景是:通过ClassLoader动态加载外部class文件,class文件又依赖某个具体jar包,需要动态加载jar包,采用URLClassLoader. 1.xml配置文件 <?xml ...
- Java运行时动态加载类之ClassLoader
需求场景:动态加载类ClassLoaderd,在xml文件中配置加载类名称和方法,: 一.准备 1)在D:\\tmp\\目录下配置a.xml文件: <?xml version="1.0 ...
- Java反射-静态/动态加载类
title: Java反射-静态/动态加载类 date: 2019-05-28 18:50:00Java反射-静态/动态加载类 Class 类是对象,是java.lang.Class类的实例对象.任何 ...
- Java利用反射动态加载类实战
package com.web.common.utility.reflector; import java.io.Serializable; import java.lang.reflect.Cons ...
- java动态加载jar时,jar中还有第三方jar无法加载的解决方法
java动态加载jar时,jar中还有第三方jar无法加载的解决方法 当java插件化开发时,即一个java程序在运行的情况下动态加载另一个jar,网上大多数的方法如下 public static v ...
- java重新加载类_java重新加载类的探寻
java重新加载类的探寻 首先上结论:java类加载器不支持重新加载类.如果想重新加载,那就新建一个类加载器. 接下来慢慢讲: 项目背景 在近日做的一个项目中,有一个动态获取用户输入的代码,并进行运行 ...
- echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava
[ASP.net教程]ECharts Java 动态加载数据,echartsjava 0 2015-12-18 00:00:05 1.前台jsp页面html PUBLIC "-//W3C// ...
最新文章
- CentOS5.6系统下mysql5安装
- mybatis自动生成代码工具
- Node.js EventEmitter
- 第07章:MongoDB-CRUD操作--文档--创建
- linux的ftp下载假死,记一次commons-net FTP上传下载卡死
- 计算机计算资源估计,项目时间管理中的计算题三点估算和关键路径法
- 普通路由器改4g路由器_4G工业路由器助力叉车锂电池监测
- Access链接表的使用
- ‘chromedriver.exe‘ executable needs to be in PATH.解决办法
- js中比較好的继承方式
- TTL和CMOS的区别
- PPT镂空字体、填充文字、图片字、拆分字制作
- GB2312编码理解
- 二叉树前中后序遍历(循环实现)
- win10很多软件显示模糊_win10系统字体模糊的解决方法
- JAVA超市管理系统
- itunes一直显示正在验证iphone恢复_超全面iPhone实用技巧汇总,有用收藏
- 开源 == 文化:红帽社区开放日图文回顾
- 2023秋招--游卡--游戏客户端--二面面经
- 【Statistics】HYPOTHESIS TEST(SIGNIFICANCE TEST)