java - 使用条件运算符来选择哪个对象调用特定方法?

标签 java coding-style conditional-operator

我有两个集合,并且根据是否满足某些条件将项目添加到其中一个或另一个集合中。

有些不经意间,偶然发现写是合法的

(test(foo) ? cOne : cTheOther).add(foo);

代替

if (test(foo)) {
 cOne.add(foo);
} else {
 cTheOther.add(foo);
}

虽然第一个让我觉得自己很聪明(总是加分),但我不确定长期的可读性、可维护性等。我看到的基本优势是,如果我知道我总是会做同样的事情事情,它变成了一个位置来改变一个方法(而不是两个,或者如果我正在实现 a switch statement via conditional operators 可能很多)。当情况并非如此时,主要缺点就会出现(即,我需要为某些情况而不是其他情况添加方法调用)。

您认为这两种方法(或其他解决方案)的优缺点是什么?

如果您认为这个使用条件运算符来设置调用方法的对象的特定实例不是正确的选择,那么在某些情况下它是否合理?

最佳答案

一个更简单的代码片段是

SomeClass component = test(foo) ? cOne : cTheOther;
component.add(foo);

换句话说,将分配与使用分开。

关于java - 使用条件运算符来选择哪个对象调用特定方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2133245/

相关文章:

java - Map.put 和 Map.putAll 方法之间的区别?

ruby - 如何将 if..else block 的结果分配给变量?

c++ - 使用预处理器对 C/C++ 进行元编程

c++ - 为什么 C++ 不允许在条件运算符中进行隐式列表初始化?

java - 对于以下情况,Java 中三元运算符的真正用途是什么?哪个会更有效率?

java - 如何在java命令提示符下运行签名的jar文件?

java - 使用 JDK 1.6.x G1 ("Garbage First"的经验)

javascript - 如何为pdfmake表格中的每两行着色

java - 按键将对象列表分组到具有唯一对象子列表的列表中(使用java流)

c# - 抑制 TryParse 调用的静态代码分析警告 CA1806