Ответ 1
Нам нужно больше узнать о вашем коде, но немного подумав, я думаю, что что-то вроде этого будет работать:
ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {
}
if (!returned.finished) {
}
У меня есть метод, который выполняет много проверок и вычислений и возвращает пользовательский класс returnMessage. returnMessage имеет 2 булина и строку. То, что я хочу сделать, это запустить этот метод в цикле while из моего основного класса и получить доступ к объекту returnMessage после того, как цикл while завершится в последний раз.
В 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. (Это связано с тем, что он подвержен ошибкам и очень трудно определить, разница между = и == в середине большого количества кода. Это был преднамеренный выбор, основанный на многолетнем опыте работы с 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, чтобы он соответствовал.
это возможно так:
while( (returned=myObject.myMethod()).isFinished()){
}
или, точнее, (returned=myObject.myMethod())
присваивает объект, возвращенный returned
, и вы можете использовать его как обычный var