第30回 Javaプログラミングのダイナミックス を読んで自分用まとめ
Javaプログラミングのダイナミックス 第1回:クラスとクラスのロード処理
http://www.ibm.com/developerworks/jp/java/library/j-dyn0429/
Javaソースをコンパイルしたもの(.class)はバイナリー形式で保存されている。
この.classがロードされるのは、その.classが必要になったときである。
引用:
public class Demo { public static void main(String[] args) { System.out.println("**beginning execution**"); Greeter greeter = new Greeter(); System.out.println("**created Greeter**"); greeter.greet(); } } public class Greeter { private static Message s_message = new Message("Hello, World!"); public void greet() { s_message.print(System.out); } } public class Message { private String m_text; public Message(String text) { m_text = text; } public void print(java.io.PrintStream ps) { ps.println(m_text); } }
verbose:classによる出力の一部(引用)
**beginning execution** [Loaded Greeter] [Loaded Message] **created Greeter** Hello, World!
Javaプログラミングのダイナミックス 第2回: リフレクション入門
http://www.ibm.com/developerworks/jp/java/library/j-dyn0429/
リフレクションで使うクラスの情報はおのおののclassフィールドによって取得できる。
classフィールドに入っているのはjava.lang.Classのインスタンスである。
例:
Class clas = Hoge.class;
こう書いただけで、クラスのロードが終わり、情報がjava.lang.Classインスタンスとして取得できる。
Class.forName()を使えば、文字列として名前を与えることで、クラスをロードさせその情報を得ることができる。
Class c = Class.forName("Hoge");