« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
关注电子政务、大型企业应用开发、Web、Workflow、MOM、MDA、RCP、GEF email:gmluyang@gmail.com
|
Blog信息 |
blog名称:SixSun的Blog 日志总数:152 评论数量:372 留言数量:13 访问次数:2377415 建立时间:2004年12月13日 |

| |
[J2SE / 基础类]ClassLoader 读书笔记, 软件技术
SixSun 发表于 2006/4/18 19:30:23 |
Java 的书本上提到静态初始化区块(static initialization block)时,都会说「静态初始化区块是在类别第一次载入的时候才会被呼叫那仅仅一次。」严格来说,应该改成「静态初始化区块是在类别第一次被实体化的时候才会被呼叫且仅仅一次。」
所以,我们得到以下结论:不管您使用的是new 来产生某类别的实体、或是使用只有一个参数的forName()方法,内部都隐含了”加载类别+呼叫静态初始化区块”的动作。而使用具有三个参数的forName()方法时,如果第二个参数给定的是false,那么就只会命令类别加载器加载该类别,但不会叫用其静态初始化区块,只有等到整个程序第一次实体化某个类别时,静态初始化区块才会被叫用。 |
|
|