【Java】インナークラスをインスタンス化(new)する方法

インナークラスをインスタンス化する方法です。

newを使ってインスタンス化する方法とインスタンス化するためのメソッドを作成する2通りの方法を紹介していきます。

[スポンサーリンク]

newを使ってインスタンス化する

今回インスタンス化するインナークラスはこちらです。

それではさっそくnewを使って、Animalクラスの中にあるインナークラスのDogをインスタンス化していきましょう!

public class Animal {
    public class Dog {
        public Dog(String name) {
            this.name = name;
        }
        public String name;
    }
}

インスタンス化は、親クラス.newで行います。

    Animal sample = new Animal();
    Dog dog = sample.new Dog("taro");
    System.out.println(dog.name);
>実行結果
taro

インスタンス化するメソッドを用意する

親クラスにインナークラスをインスタンス化するメソッドをもたせるという手段もあります。

public class Animal {
    public class Dog {
        public Dog(String name) {
            this.name = name;
        }
        public String name;
    }

    public Dog getDog(String name) {
        return new Dog(name);
    }
}

getDog()を呼び出すことでDogクラスをインスタンス化できます。

    Animal sample = new Animal();
    Dog dog = sample.getDog("taro");
    System.out.println(dog.name);
>実行結果
taro

Javaのバージョン

今回検証したjavaのバージョンは8です。

さいごに

親クラス.newの方法だとあまり馴染みがないのでメソッドを持たせる方法の方が第三者がコードを見た時に理解しやすいかもしれませんね。

それでは!