我有两个集合,并且根据是否满足某些条件将项目添加到其中一个或另一个集合中。
有些不经意间,偶然发现写是合法的
(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/