我可以在JAVA中的非赋值情况下使用条件运算符吗?

我可以在JAVA中的非赋值情况下使用条件运算符吗?,java,Java,如果是任务,情况很简单 result = testCondition ? value1 : value2; 但是如果我想用它来代替if语句呢? 例如,在日志记录情况下: logger.shouldDebbug ? logger.log("logging") : (what to do if not?); 如果我不知道在false的情况下该怎么办,我还可以使用此运算符吗?是的,如果将它们包装在返回函数中,您可以这样做,但不应该这样做 在记录器示例中,让记录器输出为void,在未启用调试时丢弃输

如果是任务,情况很简单

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

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

如果我不知道在false的情况下该怎么办,我还可以使用此运算符吗?

是的,如果将它们包装在返回函数中,您可以这样做,但不应该这样做

在记录器示例中,让记录器输出为void,在未启用调试时丢弃输入

您不想用所有这些日志检查来迷惑代码。 尽可能少地在中心位置执行检查

如果启用了调试,请在logger.log函数中进行检查,或者将记录器替换为虚拟模拟,该模拟除了接受输入外不执行任何操作,并立即放弃输入

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

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

如果你坚持的话,你可以使用它,通过定义一个无意义的变量并利用函数,但这不是一个很好的编码习惯这纯粹是一项工作

例如:

public static boolean test() {
    return 1>0;
}

public static int success() {
    System.out.println("true");
    return 0; // has no meaning whatsoever
}

public static int fail() {
    System.out.println("false");
    return 0; // has no meaning whatsoever
}

public static void main(String[] args) {
    int meaningless = test() ? success() : fail();
}

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

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(); }

“第二个或第三个操作数表达式调用void方法是一个编译时错误。”不,不能:)。所以,不,W.L.O.g,你不能用它来代替<代码>如果。你可以在语句的中间有条件地产生一个值。不能使用它有条件地插入语句。如果,则它不是
的替代品。可能是