2013-03-27 2 views
0

Предположим, у меня есть класс myClass и String myString. Как мне это сделать:Как создать новый (объект?) Класса с именем переменной?

myClass [value of myString] = new myClass; 
+1

Использование строкового значения как переменной? Вы не можете. Есть ли причина, почему вы хотите это сделать? –

ответ

2

Вы не можете иметь динамическую переменную в Java. Тем не менее, вы можете использовать Map<String, Object> иметь String myString как ключ и установить новое значение как новый экземпляр вашего класса:

Map<String, Object> map = new HashMap<String, Object>(); 
map.put(myString, new MyClass()); 

Если вы уверены, что ваша карта будет содержать только MyClass экземпляры, то вы можете использовать Map<String, MyClass>.

Map<String, MyClass> map = new HashMap<String, MyClass>(); 
1

Вы не можете использовать значение строковой переменной в качестве имени переменной. Java этого не позволяет.

Однако с Map, вы можете связать строку (в качестве ключа) к значению:

Map<String, MyClass> map = new HashMap<String, MyClass>(); 
map.put(myString, new MyClass()); 

Это не совсем то, что вы ищете, но в Java, это так близко, как вы 'собираюсь получить.

+0

похоже, что у нас есть та же идея, и потребовалось то же самое время, чтобы написать наши ответы. –

+0

Какова сильная типизация? Это больше о компиляции именования :) –

+0

@ Luiggi, великие умы действительно думают одинаково и на расстоянии 2 секунды! – rgettman

0

Используйте карту для хранения Object сек проиндексированы вашей String

public static void main(String[] args) { 
    final String myString = "something"; 
    final Map<String, Object> map = new HashMap<String, Object>(); 
    map.put(myString, new Object()); 
} 
0

что об использовании дженериков и создания базового класса с параметрами типа

public MyGenClass<K,V>{ 
private Map<K,V> map = new HashMap<K,v>(); 

public Map<K,V> getMap(){ 
    return map; 
} 

public void setMap(Map<K,V> iMap){ 
    map=iMap; 
} 

} 

с помощью этого класса, вы можете легко получить различные типы карт с аналогичными методами.

enjoy :)