Hi, I was trying to compile a statement. int i = 20; final int j = 20; byte a = i; //Fails byte b = j; //does not complain. In the book I am reading the author says that since the final value of j is in the range of byte b, it won't complain. then why does the line before fails. Is it because we do not know the value of i for sure(unlike j) and it might go out of range of byte a? Any help will be greatly appreciated Sriramsandhya
I think you are understanding the situation. The compiler can determine (and link) the value of the final variable at compile time. The other variable is not final, so the "link" cannot be made (and the value guaranteed) at compile time and so the compiler error.