Предположим, у меня есть класс myClass
и String myString
. Как мне это сделать:Как создать новый (объект?) Класса с именем переменной?
myClass [value of myString] = new myClass;
Предположим, у меня есть класс myClass
и String myString
. Как мне это сделать:Как создать новый (объект?) Класса с именем переменной?
myClass [value of myString] = new myClass;
Вы не можете иметь динамическую переменную в 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>();
Вы не можете использовать значение строковой переменной в качестве имени переменной. Java этого не позволяет.
Однако с Map
, вы можете связать строку (в качестве ключа) к значению:
Map<String, MyClass> map = new HashMap<String, MyClass>();
map.put(myString, new MyClass());
Это не совсем то, что вы ищете, но в Java, это так близко, как вы 'собираюсь получить.
похоже, что у нас есть та же идея, и потребовалось то же самое время, чтобы написать наши ответы. –
Какова сильная типизация? Это больше о компиляции именования :) –
@ Luiggi, великие умы действительно думают одинаково и на расстоянии 2 секунды! – rgettman
Используйте карту для хранения 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());
}
что об использовании дженериков и создания базового класса с параметрами типа
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 :)
Использование строкового значения как переменной? Вы не можете. Есть ли причина, почему вы хотите это сделать? –