我可以在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,你不能用它来代替<代码>如果。你可以在语句的中间有条件地产生一个值。不能使用它有条件地插入语句。如果,则它不是
的替代品。可能是