2

「ステートメントではありません」とコンパイルしようとすると、コンパイルエラーが発生します。コードは次のとおりです。

(checkDatabaseExist())?connectToDB() : buildDB();

関数が次の場合:

private boolean checkDatabaseExist() {...}
private void connectToDB(){...}
private void buildDB(){...}

何か案は?

4

4 に答える 4

5

はい、そのような条件演算子を使用することはできません。結果として、ある式または別の式を計算することを目的としています。これは、実行するステートメントまたは別のステートメントを選択する方法を意図したものではありません。

使用するだけです:

if (checkDatabaseExist()) {
    connectToDB();
} else {
    buildDB();
}
于 2012-12-08T08:12:33.347 に答える
1

JLSで述べられているように-セクション15.25-条件演算子:-

2番目または3番目のオペランド式がvoidメソッドの呼び出しである場合、コンパイル時エラーになります。

したがって、if-elseコンストラクトを使用して、さまざまな条件でメソッドを呼び出す必要があります。

if (checkDatabaseExist()) {
    connectToDB();
} else {
    buildDB();
}
于 2012-12-08T08:14:34.993 に答える
1

三項演算子は、 voidを返すメソッド/操作では使用できません。

メソッド/式は、参照タイプと互換性のある値を返す必要があります。

于 2012-12-08T08:17:08.077 に答える
0

@Jon Skeetが言ったことに加えて、三項演算子(使用しているもの)は、この種の方法で使用されるように設計されています。

String s = someBoolean ? "someBoolean is true" : "someBoolean is false";

(condition) ? (value if true) : (value if false)

于 2012-12-08T08:13:55.557 に答える