我有一个方法可以进行大量的检查和计算,并返回一个自定义类returnMessage。 returnMessage有2个布尔值和一个String。我想要做的是在我的主类的while循环中运行此方法,并在while循环最后一次终止后访问returnMessage对象。
在php中,这将是
的情况while ( $returned = myObject->myMethod()->finished )
{
}
if( $returned -> finished == FALSE)
{
...
}
然而尝试像这样分配给我一个布尔预期的错误java(上面可能有php错误,它已经很晚了:D)
答案 0 :(得分:34)
我们需要看到更多你的代码,但猜测一下我觉得这样的东西会起作用:
ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {
}
if (!returned.finished) {
}
答案 1 :(得分:4)
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";
}
}
答案 2 :(得分:3)
虽然在PHP中可以接受,但我猜(我不用PHP编写代码),在Java中的条件内进行赋值被认为是非常糟糕的形式。 (这是因为它容易出错并且很难发现,在很多代码的中间区别是=和==。这是基于多年C和C ++经验的深思熟虑的选择。)
实际上,我无法完全遵循您的代码。你说“returnMessage有2个布尔值和一个字符串”,但我在PHP中理解的测试是myObject->myMethod()->finished != null
,而returned
被设置为finished
的值,但是你去了并测试与$returned -> finished
相同的myObject->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代码。
答案 3 :(得分:1)
这可能是这样的
while( (returned=myObject.myMethod()).isFinished()){
}
或者更准确(returned=myObject.myMethod())
将返回的对象分配给returned
,您可以像普通var一样使用它