多くのチェックと計算を行い、カスタムクラスreturnMessageを返すメソッドがあります。 returnMessageには2つのブール値と1つの文字列があります。私がやりたいことは、メインクラスからwhileループでこのメソッドを実行し、whileループが最後に終了した後にreturnMessageオブジェクトにアクセスできるようにすることです。
PHPでは、これは
while ( $returned = myObject->myMethod()->finished )
{
}
if( $returned -> finished == FALSE)
{
...
}
ただし、このように割り当てようとすると、Javaでブール型の予期されるエラーが発生します(上記ではphpエラーが発生する可能性があります。遅くなります:D)
私たちはあなたのコードをもっと見る必要がありますが、少し推測すると、次のようなものがうまくいくと思います:
ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {
}
if (!returned.finished) {
}
Whileループは条件をチェックします。便利な別の例を次に示します。
public class test {
public static void main(String[] args) {
String line;
while((line = readFromFile())!=null){
//do something with var 'line'
System.out.println(line);
break;
}
}
static String readFromFile(){
return "test string";
}
}
PHPでは許容できると思いますが(私はPHPでコーディングしていません)、Javaの条件内で代入を行うのは非常に悪い形式と考えられています。 (これはエラーが発生しやすく、見つけるのが非常に難しいためです。=と==の違いは、多くのコードの真ん中にあります。これは、CおよびC++での長年の経験に基づく意図的な選択でした。)
現状のままでは、コードを完全に追跡することはできません。 「returnMessageには2つのブール値と1つの文字列がある」と言いましたが、PHPで理解しているように、テストはmyObject->myMethod()->finished != null
であり、returned
はfinished
の値に設定されます。しかし次に行って、myObject->myMethod()->finished->finished
と同じ$returned -> finished
をテストします。 PHP構文を誤解している場合は申し訳ありません。
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コードを一致させるように修正します。
これはそのように可能です
while( (returned=myObject.myMethod()).isFinished()){
}
またはより正確に(returned=myObject.myMethod())
は、返されたオブジェクトをreturned
に割り当て、通常のvarのように使用できます