【Java的类几时加载】

【Java的类何时加载】
请问各位大神,既然Java的类是在运行时被使用的时候进行第一次加载,那为什么反射机制一直强调的是   “在运行时”   对类进行加载、探知、自审?反正都是在运行时加载为什么反射机制特别强调在运行时呢?另外对Java的反射理解的不是很明白,可不可以给举例说明一下什么时候使用Java的反射机制?
------解决思路----------------------
写框架的时候,用到某些设计模式的时候,或者其他比较特殊的需求的时候可能会用到反射。
------解决思路----------------------
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中