Java 为什么使用?:条件运算符不正确?

Java 为什么使用?:条件运算符不正确?,java,Java,我在尝试编译“非语句”时遇到编译错误,代码为: (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();
}

除了@Jon Skeet所说的之外,三元运算符(您正在使用的)设计用于以下方式:

String s = someBoolean ? "someBoolean is true" : "someBoolean is false";
(条件)?(如果值为true):(如果值为false)

如中所述:-

这是第二个或第三个操作数的编译时错误 表达式是对void方法的调用

因此,必须使用
if-else
构造在不同条件下调用方法

if (checkDatabaseExist()) {
    connectToDB();
} else {
    buildDB();
}

三元运算符不能与返回void的方法/操作一起使用


方法/表达式必须返回与引用类型兼容的值。

不能将?:条件运算符与void方法一起使用。必须从语句中返回某些内容。请使用
if/else
而不是
?:
。它不是三元运算符。它是一个三元运算符。然而,它是一个条件运算符。从技术上讲,它是一个条件运算符。正如我之前评论的,它不是三元运算符,而是一个三元运算符。这就是条件运算符。=)