Java:根据变量访问正确的映射,而不使用 "if"

标签 java

这就是我的情况:

我有一个获取字符串和一堆其他信息的方法。 根据字符串的内容,我想将其他信息放入我拥有的两个 map 之一中。像这样:

if (string.equals("A")) {
  A.put[..]
} else if (string.equals("B")) {
  B.put[..]
}

但是因为这种情况在我的方法中发生了几次,所以我不想每次都使用 if/else 因为冗余。

所以我想我需要的是某种对象/指针/引用,我可以在开始时分配我想要使用的 map 一次,然后将其用作占位符。

最佳答案

这就是我们有引用变量的原因:

Map<?,?> map;
if(string.equals("A"))
    map = A;
else if(string.equals("B"))
    map = B;
else
    map = new HashMap<>();

工作正常。最后一行更像是对字符串的错误检查,并且在方法完成后将被垃圾收集(否则映射可能不会初始化,这将抛出空指针)。之后,您可以将所有内容放入 map 中(感谢引用变量:-))。请记住, map 只是对您的 map A 或 B(或“无效”)的引用

关于Java:根据变量访问正确的映射,而不使用 "if",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34949036/

相关文章:

java - 用户 'User_so' @'10.64.0.148' 的访问被拒绝(使用密码 : YES)

java - 类上的多个 Deltasike securityBindingType 注释

java - 使用 selenium webdriver 下载文件夹中的文件

java - 从 Java 启动 Cygwin 进程

java - 从 Java 的 processbuilder 执行的 ffmpeg 在 Windows 7 下不返回

java - 抛出异常后回滚事务

java - 如何运行一个允许传入连接的简单套接字服务器?

java - Java 一定要编译成字节码吗?

java - 一对多引用使用继承映射映射的实体会导致插入,然后更新查询

java - Iterator 或 foreach 的延迟