黑马程序员技术交流社区
标题:
类加载新问题
[打印本页]
作者:
王大斌
时间:
2013-4-18 00:35
标题:
类加载新问题
我们知道,得到一个类的字节码文件对象有三种方式
1.类名.class 例如,System.class;
2.对象.getClass() ,new Data().getClass()
3.使用静态的方法加载这个字符串所对应类的字节码。
Class.forName(“java.util.String”);
也就是只有在类字节码加载到jvm机后,才能得到其字节码文件对象吧
当加载字节码文件对象的时候,一定会调用static{}块中的语句吧,
为什么我在使用Class s = Person3.class;
的时候,不去调用我Person3中的静态代码块
class Person3
{
static
{
System.out.println("dsffasdf");
}
}
作者:
曹德君
时间:
2013-4-21 00:28
本帖最后由 曹德君 于 2013-4-21 00:30 编辑
我是这样理解的Class这个类是描述所有的类的。在这里Person3.class只是
CLass
这个类里面描述的一个事物,并不是一个具体的对象,所以虚拟机并没有加载Person3这个类。
作者:
932759732
时间:
2013-4-21 01:07
package day2;
public class Test {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Class.forName("day2.Person3");
}
}
class Person3
{
static
{
System.out.println("dsffasdf");
}
}
复制代码
D:\QQ截图20130421010611.PNG
我试了一下。结果是这样的
QQ截图20130421010611.png
(2.73 KB, 下载次数: 69)
下载附件
2013-4-21 01:07 上传
作者:
黄玉昆
时间:
2013-4-22 08:12
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2