20

多くのチェックと計算を行い、カスタム クラス returnMessage を返すメソッドがあります。returnMessage には 2 つのブール値と 1 つの文字列があります。私がやりたいことは、メイン クラスの while ループでこのメソッドを実行し、最後に while ループが終了した後に returnMessage オブジェクトにアクセスできるようにすることです。

PHPでは、これは次の場合になります

while ( $returned = myObject->myMethod()->finished )
{

}

if( $returned -> finished == FALSE)
{
...
}

ただし、このように割り当てようとすると、Javaでブール値の予期されるエラーが発生します(上記にはphpエラーがある可能性があります。遅いです:D)

4

4 に答える 4

48

あなたのコードをもっと見る必要がありますが、少し推測すると、次のようなものがうまくいくと思います。

ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {

}
if (!returned.finished) {

}
于 2012-04-21T23:54:20.117 に答える
3

PHP では許容されますが (私は PHP ではコーディングしません)、Java で条件内で代入を行うのは非常に悪い形式と考えられています。(これは、エラーが発生しやすく、発見するのが非常に難しいためです。多くのコードの途中にある = と == の違いです。これは、C と C++ の長年の経験に基づいて意図的に選択されました。)

そのままでは、あなたのコードを完全に理解することはできません。「returnMessageには2つのブール値と文字列があります」と言いますが、PHPで理解しているように、テストは でmyObject->myMethod()->finished != nullありreturned、 の値に設定されますが、次に行って、 と同じであるfinishedテストを行います。PHPの構文を誤解していたらすみません。 $returned -> finishedmyObject->myMethod()->finished->finished

Java での一般的な推奨事項は、次のようなものです。

ReturnMessage returned = myObject.myMethod().getFinished();
while (returned != null) { 

    ...

    returned = myObject.myMethod().getFinished(); // or did you mean myObject.myMethod();   
}

if (!returned.finished) { // or, better: if (!returned.isFinished())
    ...
}

PHP を誤解している場合はお知らせください。Java コードを修正します。

于 2012-04-22T05:25:15.940 に答える
1

これはそのように可能です

while( (returned=myObject.myMethod()).isFinished()){

}

または、より正確に(returned=myObject.myMethod())は、返されたオブジェクトを割り当て、returned通常の var のように使用できます

于 2012-04-21T23:54:00.407 に答える