Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在JAVA中,我可以在不指定的情况下使用条件运算符吗?

如果是任务,情况很简单

result = testCondition ? value1 : value2;

但是如果我想用它来代替if语句呢? 例如,在日志记录情况下:

logger.shouldDebbug ? logger.log("logging") : (what to do if not?);

如果我不知道在false的情况下该怎么做,我还能使用这个操作符吗


共 (2) 个答案

  1. # 1 楼答案

    所有内容都已在评论中解释,因此我只想在这里提出一些想法:

    public class Ternary {
        private final boolean condition;
        private Ternary(boolean condition) { this.condition = condition; }
        public static Ternary of(boolean condition) { return new Ternary(condition); } 
        public Ternary onTrue(Runnable r) { if (condition) { r.run(); } return this; }
        public Ternary onFalse(Runnable r) { if (!condition) { r.run(); } return this; }
    }
    

    用法示例:

    Ternary.of(o != null).onTrue(() -> doSomething()).onFalse(() -> doSomethingElse());
    

    但更简单的做法是:

    if (o != null) { doSomething(); } else { doSomethingElse(); }
    
  2. # 2 楼答案

    是的,如果你把它们包装在一个返回函数中,你可以,但不应该

    在您的记录器示例中,让记录器输出无效,在未启用调试时丢弃输入

    您不想用所有这些日志检查来迷惑代码。 尽可能少地、尽可能集中地进行检查

    要么在记录器中进行检查。如果启用了调试,则使用日志函数,或者使用虚拟模拟替换日志,该模拟除了接受输入之外什么都不做,并立即丢弃它

    如果使用log4j等标准日志框架,可以设置调试级别,只显示信息或更严重、警告或更严重、错误或更严重

    其他“快速”检查也是如此。如果你发现自己经常使用某个模式,如果需要的话,可以用静态方法为它编写一个实用程序类,这样你就有一个地方需要更改内容,而不是在生产时需要更新200个代码点