在Java while循环条件中分配变量?

我有一个方法,它做了很多检查和计算,并返回一个自定义类,returnMessage。 returnMessage有2个布尔值和一个String。 我想要做的是在我的主类的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) { } 

虽然在PHP中是可以接受的,但我想(我不用PHP编写代码),在Java中的条件内进行赋值被认为是非常糟糕的forms。 (这是因为它容易出错并且很难发现,在很多代码的中间区别是=和==。这是基于多年C和C ++经验的深思熟虑的选择。)

实际上,我无法完全遵循您的代码。 你说“returnMessage有2个布尔值和一个字符串”但测试,正如我在PHP中理解的那样,是myObject->myMethod()->finished != null并且returned被设置为finished的值,但是你去了test $returned -> finishedmyObject->myMethod()->finished->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循环检查条件。 这是另一个可以派上用场的例子:

 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"; } } 

这是可能的

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

或者更精确(returned=myObject.myMethod())指定返回的对象returned ,你可以像普通var一样使用它