JavaA2Z

KAB-studio > プログラミング > JavaA2Z > インスタンス初期化子とは

インスタンス初期化子

日本語 実体初期化子
英語 instance initializer
ふりがな いんすたんすしょきかし
フリガナ インスタンスショキカシ

解説

コンストラクタの前に呼び出されるメソッド
 
クラス内に、何も修飾せず「{ 実装 }」と記述することで、コンストラクタが呼び出される前にメソッドとして呼び出される。これが「インスタンス初期化子」である。
この機能により「コンストラクタ共通の初期化処理」をうことができるが、何も修飾しない「{}」が見慣れないものであること、コンストラクタの前に初期化われるという点に違和感があること、コンストラクタだけで十分間に合うということから、あまり使用されていない。
 
static初期化子に似ているが、static初期化子は「クラスを使用した」時点で呼ばれ、その後は呼び出されない。コンストラクタと結びついて呼び出されるインスタンス初期化子とは異なるものである。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    // フィールドの宣言。
    private int data = callHere( "フィールドを初期化します。" );
    
    /**
    *   インスタンス初期化子。
    *   コンストラクタの前に呼び出される、
    *   メソッドのようなものです。
    */
    {
        System.out.println( "Sample.{}" );
        data = 100;
    }

    /**
    *   引数なしコンストラクタ。
    */
    public Sample()
    {
        System.out.println( "Sample.Sample() : " + data );
    }

    /**
    *   引数ありコンストラクタ。
    */
    public Sample( int i )
    {
        System.out.println( "Sample.Sample( int )" + data );
    }

    public static void main( String[] args )
    {
        Sample sample;
        // インスタンス初期化子は、フィールドの初期化の後で、
        // かつコンストラクタの前に呼び出されます。
        sample = new Sample();
        // フィールドを初期化します。
        // Sample.{}
        // Sample.Sample() : 100
        sample = new Sample( 100 );
        // フィールドを初期化します。
        // Sample.{}
        // Sample.Sample( int )100
    }

    /**
    *   フィールドの初期化タイミングを調べるためのメソッド。
    */
    private static int callHere( String string )
    {
        System.out.println( string );
        return 0;
    }
}
// Sample.java
public class Sample
{
    // フィールドの宣言。
    private int data = callHere( "フィールドを初期化します。" );
    
    /**
    *   インスタンス初期化子。
    *   コンストラクタの前に呼び出される、
    *   メソッドのようなものです。
    */
    {
        System.out.println( "Sample.{}" );
        data = 100;
    }

    /**
    *   引数なしコンストラクタ。
    */
    public Sample()
    {
        System.out.println( "Sample.Sample() : " + data );
    }

    /**
    *   引数ありコンストラクタ。
    */
    public Sample( int i )
    {
        System.out.println( "Sample.Sample( int )" + data );
    }

    public static void main( String[] args )
    {
        Sample sample;
        // インスタンス初期化子は、フィールドの初期化の後で、
        // かつコンストラクタの前に呼び出されます。
        sample = new Sample();
        // フィールドを初期化します。
        // Sample.{}
        // Sample.Sample() : 100
        sample = new Sample( 100 );
        // フィールドを初期化します。
        // Sample.{}
        // Sample.Sample( int )100
    }

    /**
    *   フィールドの初期化タイミングを調べるためのメソッド。
    */
    private static int callHere( String string )
    {
        System.out.println( string );
        return 0;
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2006/02/13
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。