java - 如何对与对象同名的字符串使用点运算?

标签 java object

我有两个 Cat 对象

   Cat A = new Cat();
   Cat B = new Cat();

然后我询问用户他想要修改哪只猫

   String choice = input.nextLine;

我想在 choice 上运行我的所有 Cat 实例方法并更改它引用的对象。例如:

   choice.drinkMilk(15, 2);

如果choice“A”,它将在猫A上执行drinkMilk(15, 2),如果它是“B” 它会在 B 上执行。

有什么办法可以做到这一点吗?

编辑:有没有办法在没有 HashMap 的情况下做到这一点?这是我的 Java 入门类(class),我们还没有学过。

最佳答案

当您创建猫对象时,将它们放入 HashMap 中:

Cat A = new Cat();
Cat B = new Cat();
Map<String, Cat> herd = new HashMap<String, Cat>();
herd.put("A", A);
herd.put("B", B);

然后,当用户从 A 或 B 中进行选择时,您可以检索适当的猫进行操作:

String choice = input.nextLine;
Cat selectedCat = herd.get(choice);
if(selectedCat != null) {
    selectedCat.drinkMilk(15,2);
} else {
    // user made a bad selection, so let them know
}

如果您无法使用 Map,那么您可以使用 if/else 解决方案:

String choice = input.nextLine;
if("A".equals(choice)) {
    A.drinkMilk(15,2);
} else if("B".equals(choice)) {
    B.drinkMilk(15,2);
} else {
    // user made a bad selection, so let them know
}

关于java - 如何对与对象同名的字符串使用点运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468154/

相关文章:

java - 可选参数 jpa 2.1

java - 如果其他类更改了某些内容,如何使更改对一个类可见?

javascript - 无法获取使用 eval() 评估的字符串的类型

java - 调用 Object.wait() 后设置对象的字段

arrays - 包含其他对象数组的类对象

java - 使用 .length 和 .length() 求长度有什么区别

java - 使用预处理语句设置表名

java - 在Spark Java API中联接行数据集

java - 是否有适用于 NetBeans 或 Eclipse 的 ICEfaces Maven 原型(prototype)?

JavaScript 对象和构造函数类型