Есть ли способ создать имя объекта в зависимости от ввода пользователем?Использование сканера для создания идентификатора объекта?
например.
Object scan.nextLine() = new Object();
Есть ли способ создать имя объекта в зависимости от ввода пользователем?Использование сканера для создания идентификатора объекта?
например.
Object scan.nextLine() = new Object();
Нет это не представляется возможным. В Java нет динамических переменных. Имя переменной Java должно быть объявлено в исходном коде во время компиляции.
Если вы хотите сохранить объект с введенными вами значениями пользователя, вы можете попробовать использовать Map
для сохранения данных, как показано ниже.
Map<String, Object> objects = new HashMap<String, Object>();
String name = scan.nextLine();
Object obj = new Object();
objects.put(name, obj); // saving the objects in Map
Спасибо за вашу помощь –
Нет. Вы не можете сделать это в java. Поскольку у вас уже должен быть класс, определенный для создания его объекта.
Нет, вы не можете этого сделать.
я предложил бы иметь собственный класс и хранить Имя_экземпляр:
public class MyClass {
private String instanceName;
public MyClass(String instanceName) {
this.instanceName = instanceName;
}
}
MyClass myObj = new MyClass(scan.nextLine());
Есть несколько способов, вы могли бы подделке делать это. Вы можете использовать карту для восприятия динамически названных объектов. Но поскольку вы говорите, что вы новичок, короткий ответ - нет. Убедитесь, что вы знаете, что вы просите в своем примере. Ваш пример является эквивалентом говоря:
String line = "foo";
Object line = new Object();
Мое предположение было бы, что это не то, что вы хотите (и не представляется возможным).
Я думаю, он хочет, Object foo = new Object(); , невозможно, насколько я знаю –
Учитывая линии
Type variable_name = expression ;
Название variable_name
просто используется в остальной части рамки для ссылок на результат выражения. Вы знаете, что Java - это скомпилированный язык, и эти имена полезны только программисту. Как только компилятор выполнит свою работу, он может использовать таблицу трансляции и заменять эти имена любым желаемым идентификатором.
Поскольку это имя даже не существует во время выполнения, нет способа выбрать имя переменной во время выполнения.
Однако вам может потребоваться доступ к объекту в зависимости от ввода пользователя (например, как переменные переменных PHP $$a_var
). В зависимости от вашего контекста вы можете использовать отражение для доступа к экземплярам экземпляра или просто Map<String, Object>
. Пример с отражением:
public class VariableRuntime {
static class Person {
public String first, last, city;
}
public static void main(String[] args) throws Exception {
Person homer = new Person();
homer.first = "Homer";
homer.last = "Simpson";
homer.city = "Springfield";
System.out.println("What do you want to know about Homer? [first/last/city]");
String what = new Scanner(System.in).nextLine();
Field field = Person.class.getDeclaredField(what);
System.out.println(field.get(homer));
}
}
То же самое с Map<String, String>
:
public class VariableRuntime {
public static void main(String[] args) throws Exception {
Map<String, String> homer = new HashMap<String, String>();
homer.put("first", "Homer");
homer.put("last", "Simpson");
homer.put("city", "Springfield");
System.out.println("What do you want to know about Homer? [first/last/city]");
String what = new Scanner(System.in).nextLine();
System.out.println(homer.get(what));
}
}
Если вы не знаете названия, как вы собираетесь его использовать? –
Проще говоря: № Что вы хотите достичь, сделав это? Если имя объекта имеет отношение к пользователю, это имя также может быть свойством объекта. –
Я думаю, что ответ by @cowls - это ответ на ваш вопрос –