我想从 Person 类中调用“Talk”方法。 可以说我有很多东西,适合很多人。因此,如果我想让用户输入他想要调用该方法的人的姓名,如何将用户输入存储在变量中,然后使用它来调用该方法,如下所示:
Scanner name= new Scanner(System.in);
String input= name.next();
input.Talk();
已执行的操作:
switch (input) {
case "John": John.Talk();
break;
case "Alex": Alex.Talk();
break;
case "Albert": Albert.Talk();
break;
...
}
我希望我的解释足够好。我认为这是一个简单的概念,因此必须有一个解决方案。
最佳答案
您可能想使用Map<String,Person>
。在那张 map 上你put("Alex", AlexObject)
当用户写 Alex
时您可以简单地使用键 Alex
获取存储在 map 中的 Person 对象喜欢
map.get(nameFromScanner).Talk()
但要小心,因为如果 map 不包含该名称,get
将返回null
所以你会尝试调用Talk
如果为 null,则会抛出 NullPointerException。
所以你可以尝试做类似的事情
Person p = map.get(nameFromScanner);
if (p != null){
p.Talk();
}
或者从 Java 8 开始我们可以使用类似的东西
Optional.ofNullable(map.get(nameFromScanner)).ifPresent(Person::Talk);
关于java - java中通过变量名调用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792759/