正在加载图片...
Chapter 10: Detecting Types 程序里的每个类都要有一个clas对象。也就是说,每次你撰写并且编 译了一个新的类的时候,你就创建了一个新的 class对象(而且可以这么 说,这个对象会存储在同名的 class文件里)。程序运行时,当你需要创 建一个那种类的对象的时候,巩M会检查它是否装载了那个 Class对 象。如果没有,巩VM就会去找那个 class文件,然后装载。由此也可知 道,Java程序在启动的时候并没有完全装载,这点同许多传统语言是不 样的。 那种类型的 class对象被装进了内存,所有那个类的对象就都会由 它来创建了。如果这听上去太玄,或者你不相信的话,下面这个程序就能 作证明 77: c10: Sweet shop. java Examination of the way the class loader works import com. bruceeckel. simpletest. class Candy static I System. out. println("Loading Candy") class Gum I System. out. println("Loading Gum") class Cookie i static System. out. println("Loading Cookie")i public class Sweet shop t private static Test monitor new Test()i public static void main(string[] args)t System. out. println("inside main")i new Candy ()i System. out. printin ("After creating candy" )i System. out. println("Couldn't find Gum")i System. out. println(" After Class. f (\"Gum\")") System. out. println ("After creating Cookie monitor. expect (new String[] t Loading Gum", 第4页共17页 www.wgqqh.com/shhgs/tij.htmlChapter 10: Detecting Types www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com 第 4 页 共 17 页 程序里的每个类都要有一个 Class 对象。也就是说,每次你撰写并且编 译了一个新的类的时候,你就创建了一个新的 Class 对象(而且可以这么 说,这个对象会存储在同名的.class 文件里)。程序运行时,当你需要创 建一个那种类的对象的时候,JVM 会检查它是否装载了那个 Class 对 象。如果没有,JVM 就会去找那个.class 文件,然后装载。由此也可知 道,Java 程序在启动的时候并没有完全装载,这点同许多传统语言是不 一样的。 一旦那种类型的 Class 对象被装进了内存,所有那个类的对象就都会由 它来创建了。如果这听上去太玄,或者你不相信的话,下面这个程序就能 作证明: //: c10:SweetShop.java // Examination of the way the class loader works. import com.bruceeckel.simpletest.*; class Candy { static { System.out.println("Loading Candy"); } } class Gum { static { System.out.println("Loading Gum"); } } class Cookie { static { System.out.println("Loading Cookie"); } } public class SweetShop { private static Test monitor = new Test(); public static void main(String[] args) { System.out.println("inside main"); new Candy(); System.out.println("After creating Candy"); try { Class.forName("Gum"); } catch(ClassNotFoundException e) { System.out.println("Couldn't find Gum"); } System.out.println("After Class.forName(\"Gum\")"); new Cookie(); System.out.println("After creating Cookie"); monitor.expect(new String[] { "inside main", "Loading Candy", "After creating Candy", "Loading Gum", "After Class.forName(\"Gum\")", "Loading Cookie
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有