博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java反射--动态加载
阅读量:6278 次
发布时间:2019-06-22

本文共 1005 字,大约阅读时间需要 3 分钟。

Class.forName("类的全称")

1)不仅表示类的类类型,还表示了动态加载类

2)请区分编译,运行

3)编译时刻加载类是静态加载类,运行时刻加载类是动态加载类

比如下面:

比如一个类里面有如下方法,当条件满足word的时候,调用 Word w=new Word();

当满足Excel时候,调用 Excel  e=new Excel();

这种使用new 创建对象的方式属于静态加载类,编译时刻就需要加载所有可能使用到的类,一旦Word或者Excel不存在,编译的时候就会报错,通不过。

如果我要想用哪个类,就加载哪个类,只有用到的时候,才加载,那么就可以解决这个问题。

通过动态加载类可以家具该问题。

具体实现如下:

package com.reflect;public class OfficeBetter {    public static void main(String[] args) throws Exception {            Class c1=Class.forName("com.reflect.Word");                        OfficeAble oa=(OfficeAble)c1.newInstance();  //通过newInstance()实例化一共对象,为了让不同的类都能转化,需要为这些类定义一共接口            oa.start();        }}

实例化这个类的对象,通过newInstance方法,但是如果Word类,需要转化为Word,如果是Excel类,需要转化为Excel类,

为了方便,可以给这几个类定义一共公用接口,OfficeAble。需要用的类实现它的接口即可。

package com.reflect;public interface OfficeAble {        public void start();}

Word实现接口

package com.reflect;public class Word implements OfficeAble {    @Override    public void start() {        System.out.println("word...is created");    }}

需要什么类,就按照这种方式实现即可。

 

转载地址:http://vmyva.baihongyu.com/

你可能感兴趣的文章
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>
我的友情链接
查看>>