Я думаю, вы путаете назначение с декларацией.Вы можете сделать
public static void main(String[] args){
String h = null;
for(int i=7,k=999;i+((h="hello").size())<10;i++){}
System.out.println("It should be: hello = "+h);
}
Оператор = является ассоциативным справа и устанавливает первый аргумент во второй аргумент и вычисляет первый аргумент, поэтому что-то вроде
a = b = c = 4
являетсятакой же как
(a = (b = (c = 4)))
, который устанавливает c в 4, b в c (теперь 4) и a в b (теперь также 4)
ваша строка кода может быть (переформатирована для ясности)
File[] fs=null;
File f= ??? ; //you never initialize f in the for loop, you need a starting value
int t, size;
for (t=0,size=(fs=((f=f.getParentFile()).listFiles(filt))).size();
fs==null;
t++) {
if(t>maxDepth) {throw new Exception("No dir to read");}
}
}
РЕДАКТИРОВАТЬ - (хотя это действительно ужасный код, и если вы отметите его в моем проекте, я скажу вам переписать его как можно скорее)