1

Animal のサブクラスである Dog という名前のクラスがあるとします。

文字列パラメーターに基づいて動物の特定のサブクラスのインスタンスを作成する必要があるメソッドがあります

public void createAnimalType(String animalType) {

Class clazz = Class.forName(animalType);

//Check if animalType  equals Dog, or Cat, or Fox, etc
// Example
Dog dog = (Dog) clazz.newInstance();
...

この場合、サブクラス (犬) への明示的なキャストを使用せずに、それ自体のインスタンス (動物型ではない犬、猫など) を作成する方法はありますか?

ポリモーフィズムのより細かい点が欠けている可能性があります(なぜそれをしたいのか..オブジェクトまたはアニマルにキャストする必要があります:-))

これについて賢くなるのを手伝ってくれてありがとう。

4

1 に答える 1

4

引数のないコンストラクターがある場合は、 を使用できますgetClass().newInstance()

getClass()thisスーパークラスで使用すると、たとえばあなたの例のように、の実際のクラスが得られDogます。

メソッド全体は次のようになります。

public Animal createAnimal() {
    return getClass().newInstance();
}
于 2012-04-21T10:50:34.963 に答える