java - 没有 else 的条件三元

标签 java

我读过类似的问题,并了解到不可能使用三元运算来代替 if 语句,因为它没有 else 语句。因为,if-without else 语句是二进制而不是三元。我的问题是更多的最佳实践。

在我的代码中,有很多这样的代码片段

  if( calculation < 1 ){
      calculation= 0;
    }

我想用 tenary 来缩短这些。使用以下内容更改这些语句是否是一个好习惯?

calculation = calculation < 1 ? 0 : calculation;

最佳答案

您可以创建一个(或多个)类来创建流畅的 API。这样你的行将是:

calculationTo = replace(calculationTo).with(0).when(calculationTo < 1)

在我看来,它读起来并不比标准 if 语句好多少,但它也取决于您所拥有的条件。

实现示例:

public class Replacer<T> {

    private final T value;
    private T replacementValue;

    private Replacer(T value) {
        this.value = value;
    }

    public static <V> Replacer<V> replace(V value) {
        return new Replacer<V>(value);
    }

    public Replacer<T> with (T replacementValue) {
        this.replacementValue = replacementValue;
        return this;
    }

    public T when(boolean condition) {
        if (condition) {
            return replacementValue;
        } else {
            return value;
        }
    }

}
<小时/>
import static somepackage.Replacer.replace;

public class Main {

    public static void main(String[] args) {
        int calculationTo = 3;

        calculationTo = replace(calculationTo).with(0).when(calculationTo < 1);
    }

}

您可以扩展它或将条件设置为函数,以便它可以与 lambda 等一起使用。我还会使方法 with 返回不同类的对象(例如 ReplacerWithValue ),因此在一个链中调用 with 两次会导致编译错误。

关于java - 没有 else 的条件三元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741102/

相关文章:

java - OneToMany 映射中的旧数据被删除

java.io.IOException : rsrc:application/application. bss 错误的二进制 CSS 版本 : 5. 预期版本小于或等于 3

java - OpenCV 的 java 绑定(bind)中缺少什么?

JavaApplet与Socket Server,刷新页面不会关闭端口

java - 在 Java 中向按钮添加(内置?)图标?

java - JTable setValueAt 不工作

java - 在 SQL (SQLite Android) 中更新多个列(具有不同的主键)

java - 如何在 Libgdx 中管理多个屏幕的后退按钮?

java - 计算机突然重启后 Eclipse 4.7.2 不显示项目

java - 是否可以检索 cucumber 标签?