2011-01-13 4 views
0

Например, у меня есть строковый ввод «int», могу ли я объявить переменную базу на этом входе? (не переключатель проверка пожалуйста). Я имею в виду что-то вроде этого (псевдо-код) или аналогичный:
Укажите тип данных из строки ввода?

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

// создать новую переменную с типом данных Int.

+1

Как написано, ответ нет (вы не можете создавать переменные во время выполнения). Но, вероятно, есть ответ. Какова фактическая проблема, которую вы пытаетесь решить? – Anon

+0

нет, это всего лишь часть моего эксперимента с java.Imm для java, и я узнал, что это действительно здорово! – Singgum3b

ответ

2

Вы можете сделать это:

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

Но это не будет работать для примитивных типов.

+0

, который в крайнем случае все еще может использоваться для классов-оболочек вокруг примитивных типов. – Riggy

+0

Он должен отлично работать для примитивов в коробке, то есть 'Integer',' Double' и т. Д. (В отличие от 'int' и' double'). –

+0

Я думаю, это окончательное решение. – Singgum3b

0

Практически, Java строго типизирован, и тип всех переменных должен быть известен во время компиляции, если вы хотите сделать что-нибудь полезное с ними.

Например, вы можете сделать что-то подобное;

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

..which даст вам Object O, тип которого определяется во время выполнения значением String ул. Вы не можете ничего с этим поделать, хотя без первого включения его в фактический тип, который должен быть известен во время компиляции.

+0

'Integer' не имеет конструктора no-arg, поэтому этот код будет метать. – Anon

0

Если вместо использования примитивных типов вы будете использовать имя канонического класса на основе объекта, вы можете попробовать сделать это

public Object loadClass(String className) { 

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

}