【Java的类何时加载】

西兰花不蓝 2014-10-08 11:01:47
请问各位大神,既然Java的类是在运行时被使用的时候进行第一次加载,那为什么反射机制一直强调的是 “在运行时” 对类进行加载、探知、自审?反正都是在运行时加载为什么反射机制特别强调在运行时呢?另外对Java的反射理解的不是很明白,可不可以给举例说明一下什么时候使用Java的反射机制?
...全文
175 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
coffee-time 2014-10-11
  • 打赏
  • 举报
回复
1.类加载就是在程序运行过程中你第一次使用这个类的时候进行某些操作时发生的,比如说main()方法有以下语句:

A a=new A();
A aa=new A();
B d;
C.staticMethod();
Class.forName("D");
第一行建立了A的实例,用到了A.class的构造方法,所以A就被加载进来了,而执行到new aa不会对已经加载过的A类做其它事。 第三行只是声明了一个B对象,没有实例化,所以不会加载B.class 第四行使用了C类的一个静态方法,所以C.class会被加载 第五行则是主动加载D.class 2.反射强调运行时只是告诉你它操作的是加载到jvm的.class文件而不是.java文件,所以像 void test(String str, String key, int value); 这种方法反射得到的是 void test(string,string,int) 不要指望着获得参数的名字,如str,key,value 反射主要用在设计模式(如工厂模式),框架设计,深层clone中
西兰花不蓝 2014-10-10
  • 打赏
  • 举报
回复
那虚拟机是在什么时候对类进行加载的?这几天看的有点晕 - -
rockets311 2014-10-10
  • 打赏
  • 举报
回复
写框架的时候,用到某些设计模式的时候,或者其他比较特殊的需求的时候可能会用到反射。
西兰花不蓝 2014-10-10
  • 打赏
  • 举报
回复
这没人回复怎么结贴 - -

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧