Java如何实现反射静态加载和动态加载实例代码详解1.Java动态加载类和静态加载类的区别
new创建对象的方式称作为静态加载,而使用Class.forName("XXX")称作为动态加载,它们俩本质的区别在于静态加载的类的源程序在编译时期加载(必须存在) , 而动态加载的类在编译时期可以缺席(源程序不必存在) 。
2.为什么需要动态加载类
对于我自己的理解,动态加载类增加了程序的灵活性 。比如一个程序中有50个功能 , 但你可能只会使用其中的一个,如果你用的是静态加载的方式,你必须在编译前提供100个功能的所有定义,否则无法编译通过,若你使用的是动态加载机制,则不需要如此大费周章,用哪一个就定义哪一个即可 。
静态加载:
public class Office_Static {
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();
}
}
}
这个程序编译时必须有Word和Excel这两个类存在才行,即使判断后用不到Excel也要加载
动态加载:
接口OfficeAble :
public interface OfficeAble {
public void start();}
java静态代码块 类加载顺序问题 。原因就是一句话:先有java静态代码加载了父亲java静态代码加载,才会有儿子java静态代码加载!
程序运行时,加载AB两类 , 因为A是B子类,所以先加载B类,Load B,再加在A类 LoadA,调用A a = new A()代码时,会先调用其父类B的构造方法 Create B 再调用A的构造方法 Create A
java普通方法和静态方法的加载(注意是加载)时机相同吗?存储方法耗费内存空间吗?静态方法放在Date数据区 可以直接调用 和STATIC 变量一样java静态代码加载的 在内存开始加载java静态代码加载的时候就有空间java静态代码加载了 普通方法是 程序运行到的时候才开始调用直接用
【java静态代码加载 java静态代码块存储在哪里】java静态代码加载的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于java静态代码块存储在哪里、java静态代码加载的信息别忘了在本站进行查找喔 。
推荐阅读
- 网络枪战游戏电脑版,枪战游戏电脑版单机游戏
- 鸿蒙版本本身就是七纳米的简单介绍
- 海尔电视的节能模式怎么关,海尔电视怎么关闭待机状态
- flutter教程APP,flutter教程 github
- mysql表中怎么添加列 mysql 表添加列
- 关于chatgpt每日限10条的信息
- 模拟飞行小游戏4399,模拟飞行游戏手机游戏
- 如何给网站做营销策划,怎么做网站营销
- go语言float32 go语言float