2011-01-13 9 views
0

例えば、私は文字列入力 "int"を持っています、その入力に変数ベースを宣言できますか? (スイッチはチェックしないでください)。
入力文字列からデータ型を示しますか?

String str="int"; 
new (variable_name,"int"); 

// intデータ型を使用して新しい変数を作成します。私は、この(擬似コード)または類似のようなものを意味します。

+1

をしようとすることができ、オブジェクトベースクラスのcannonical名前を使用する場合、答えは(あなたは、実行時に変数を作成することはできません)なしではありません。しかし、おそらく答えがあります。あなたが解決しようとしている実際の問題は何ですか? – Anon

+0

いいえ、それはちょうど私の実験のJavaで新しいjava.Iの私と私はそれが本当に素晴らしいことがわかった! – Singgum3b

答えて

2

あなたはこれを行うことができます。

String className = "MyClass"; 
Object obj = Class.forName(className).newInstance(); 

しかし、それはプリミティブ型では動作しません。

+0

ピンチでは、プリミティブ型の周りのラッパークラスにはまだ使用できます。 – Riggy

+0

ボックス化されたプリミティブ、つまり '整数'、 'Double'など(' int'と 'double'とは対照的に)ではうまくいくはずです。 –

+0

これは最終的な解決策だと思います。 – Singgum3b

0

実用的ではありませんが、Javaは強く型付けされていません。有用なことを行うには、コンパイル時にすべての変数の型を知っている必要があります。

たとえば、次のようにすることができます。あなたのタイプString STRの値によって実行時に決定されたObject Oを与える..which

String str = "java.lang.Integer"; 
Class clazz = Class.forName(str); 
Object o = clazz.newInstance(); 

。コンパイル時に知っていなければならない実際の型にキャストしなければ、何も役に立ちません。

+0

'Integer'は引数なしのコンストラクタを持っていないので、このコードは投げます。 – Anon

0

代わりに、プリミティブ型を使用しての、あなたが書かれたように、この

public Object loadClass(String className) { 

    return Class.forName(className).newInstance(); //this throw some exceptions. 

} 
関連する問題