I have following code,
class AA {
public static void main(String[] args) {
long ll = 100 ;
AA1 a1 = new AA1() ;
if(ll == 100) // Marked line
long lls [] = a1.val(ll);
}
}
class AA1 {
public long [] val (long ll1) {
long [] val = new long []{1 , 2, 3};
return val ;
}
}
which executes properly without the marked line. However, gives error “.class expected” with marked line. Can anybody help me what is the problem and how to solve this ?
Basically this is a simplified version of your problem:
You can’t do that in Java. You can’t use a variable declaration as the single statement in an
ifbody… presumably because the variable itself would be pointless; the only purpose would be for the side effect of the expression used for the assignment.If you really want the pointless declaration, use braces:
It’s still useless, but at least it will compile…
EDIT: Responding to the comment, if you need to use the variable outside the
ifblock, you need to declare it before theifblock, and also make sure it’s initialized before you read the value. For example:Or:
Or possibly use a conditional expression: