0

重複の可能性:
変数名の代わりに文字列を使用

文字列を使用してオブジェクトを作成できる Java の方法はありますか?

たとえば、「Toyata」というクラスがあるとします。クラス Car の文字列変数 s を使用して、Toyata のオブジェクトを作成できますか?

public class Car{
String s = "Toyota";
}

public class Toyota{
int speed;

public Toyota(int speed){
this.speed=speed;
}

}
4

2 に答える 2

0

リフレクションを使用できますが、完全修飾クラス名が必要です。

https://stackoverflow.com/a/4030634/1217408

編集:

ルックアップの使用に関するHovercraftFullOf Eelsのコメントmapは、この状況ではおそらくはるかに適切です。

于 2012-10-08T23:20:14.360 に答える
0

の値を介してクラスを照会する必要があります (デフォルト パッケージにあると仮定すると、これは機能するはずです) sgetConstructor()次に、クラスのメソッドを介して適切なコンストラクターを検索する必要があります。Toyotaデフォルトのコンストラクターが含まれていないため、予想されるパラメーターに一致するものを照会する必要があります。この場合、それはint. の形intで表されます。最後に、必要な速度を渡してコンストラクターを呼び出すと、新しいインスタンスをすぐに使用できるようになります。もちろん、処理するチェック例外がいくつかあります。ClassInteger.TYPEnewInstance()

Class<?> clazz = Class.forName(s);
Constructor constructor = clazz.getConstructor(new Class[] {Integer.TYPE});
Toyota toyota = (Toyota) constructor.newInstance(new Object[] {90});
于 2012-10-08T23:42:43.430 に答える