尝试编译时出现编译错误,“不是语句”,代码为:
(checkDatabaseExist())?connectToDB() : buildDB();
当函数是:
private boolean checkDatabaseExist() {...}
private void connectToDB(){...}
private void buildDB(){...}
有任何想法吗?
尝试编译时出现编译错误,“不是语句”,代码为:
(checkDatabaseExist())?connectToDB() : buildDB();
当函数是:
private boolean checkDatabaseExist() {...}
private void connectToDB(){...}
private void buildDB(){...}
有任何想法吗?
是的,你不能像那样使用条件运算符。它旨在计算一个或另一个表达式作为结果。它并不是一种选择执行一个语句或另一个语句的方式。
只需使用:
if (checkDatabaseExist()) {
connectToDB();
} else {
buildDB();
}
如JLS - 第 15.25 节 - 条件运算符中所述: -
第二个或第三个操作数表达式调用 void 方法是编译时错误。
因此,您必须使用if-else
构造在不同的条件下调用您的方法。
if (checkDatabaseExist()) {
connectToDB();
} else {
buildDB();
}
三元运算符不能与返回void的方法/操作一起使用。
方法/表达式必须返回与引用类型兼容的值。
除了@Jon Skeet 所说,三元运算符(您正在使用的)旨在以这种方式使用:
String s = someBoolean ? "someBoolean is true" : "someBoolean is false";
(condition) ? (value if true) : (value if false)