我想从Person类中调用一个方法"Talk".让我们说很多人都有很多物品.因此,如果我想让用户输入他想要调用方法的人的名字,我如何将用户输入存储在变量中,然后使用它来调用方法,如下所示:
Scanner name= new Scanner(System.in);
String input= name.next();
input.Talk();
Run Code Online (Sandbox Code Playgroud)
做的绝望:
switch (input) {
case "John": John.Talk();
break;
case "Alex": Alex.Talk();
break;
case "Albert": Albert.Talk();
break;
...
}
Run Code Online (Sandbox Code Playgroud)
我希望我解释得很好.我认为这是一个简单的概念,因此必须有一个解决方案.
你可能想用Map<String,Person>.在这种地图,你put("Alex", AlexObject)当用户会写Alex,你可以简单地获取存储在地图关键人物对象Alex像
map.get(nameFromScanner).Talk()
Run Code Online (Sandbox Code Playgroud)
但要小心,因为如果map不包含该名称,get将返回,null因此您将尝试调用Talknull,这将抛出NullPointerException.
所以你可以尝试做类似的事情
Person p = map.get(nameFromScanner);
if (p != null){
p.Talk();
}
Run Code Online (Sandbox Code Playgroud)
或者从Java 8开始我们可以使用类似的东西
Optional.ofNullable(map.get(nameFromScanner)).ifPresent(Person::Talk);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |