50,528
社区成员
发帖
与我相关
我的任务
分享
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中