博主分享免费Java教学视频,B站账号:Java刘哥
一、Class 类
Class.forName("类的全称")- 不仅表示类的类类型,还代表了动态加载类
- 请大家区分编译、运行
- 编译时刻加载类是静态加载类、运行时刻加载类是动态加载类
二、静态加载类
1、我们看下面这段代码,通过 new 的方式来创建对象,这其实是静态方式来加载类(Word和Excel)- public class Office {
- public static void main(String args[]) {
- if("Word".equals(args[0])) {
- Word w = new Word();
- w.start();
- }
- if("Excel".equals(args[0])) {
- Excel e = new Excel();
- e.start();
- }
- }
- }
- public class Office {
- public static void main(String args[]) {
- if("Word".equals(args[0])) {
- Word w = new Word();
- w.start();
- }
- if("Excel".equals(args[0])) {
- Excel e = new Excel();
- e.start();
- }
- }
- }
- class Word {
- public void start() {
- System.out.println("start word...");
- }
- }
三、使用动态加载的方式
1、 OfficeAble.java 定义规范的接口- public interface OfficeAble {
- void start();
- }
- public class Word implements OfficeAble {
- public void start() {
- System.out.println("start word...");
- }
- }
- public class Excel implements OfficeAble {
- @Override
- public void start() {
- System.out.println("start excel...");
- }
- }
- public class OfficeBetter {
- public static void main(String args[]) {
- try {
- //动态加载类,在运行的时候加载类
- Class c = Class.forName(args[0]);
- //通过类类型
- OfficeAble oa = (OfficeAble) c.newInstance();
- oa.start();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InstantiationException e) {
- e.printStackTrace();
- }
- }
- }
- 微信
- 交流学习,有偿服务
- 博客/Java交流群
- 资源分享,问题解决,技术交流。群号:590480292
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏