第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");