2014年7月10日木曜日

【Java】 コンストラクタのprivate宣言

クラス Hogeが次のように定義されている場合

Class Hoge {
  
    String str1;
    String strOption;

    private Hoge(){                        // private宣言★
        // 初期化
        str1 = "初期化します。";
    }

    public Hoge(String str){
       
        this();  

        // オプションの初期化
        strOption = str;
    }

}

コンストラクタHoge(引数なし)がprivate宣言されているため、Hogeクラス外部から
    Hoge hoge1 = new Hoge();
のようにインスタンス作成を行うことができなくなる。
このことを利用して、インスタンス作成時に引数を強制的に渡すようにすることができる。
    Hoge hoge2 = new Hoge("引数");

【Java】 コンストラクタ内で別のコンストラクタを呼び出す

クラス Hogeが次のように定義されている場合

Class Hoge {
  
    String str1;
    String strOption;

    public Hoge(){
        // 初期化
        str1 = "初期化します。";
    }

    public Hoge(String str){
       
        this(); // 引数なしコンストラクタを呼び出す ★ 

        // オプションの初期化
        strOption = str;
    }

}

引数なしのコンストラクタは this(); 呼び出すことができる。
なので、引数なしのコンストラクタで最低限の初期化処理を行い、その他の引数ありの
コンストラクタでは、オプションの設定 などを行うこともできる。

【Eclipse4.3】Tomcatプロジェクトのワークスペースを、他のマシンにコピーしたときの設定

Tomcatプロジェクトをまるっとコピーして、別PCのEclipseで開いたところコンパイルエラーに。。。

はて?と思いエラーが起きている場所を確認すると、どうやらJSPやサーブレット特有の

コードがエラーになっている。

Eclipseで対象のプロジェクトを選択 → 「右クリック」 → 「プロパティ」

出てきたプロパティ画面の左メニューから「Tomcat」を選択し、右側に表示された

Tomcatメニューの「全般」タブの「Tomcatプロジェクト」にチェックが付いていない!

ここにチェックをつけたところ、Tomcatプロジェクトと認識されました。