I am reading about final variables and learnt that when you have a parameter as final, you cannot change it. But then I tried out something
Compiler complains here saying you cannot change final parameter which I can understand
public class FinalVariableTest {
public void method1(final FinalVariableTest object){
object = new FinalVariableTest(); //Not allowed, compiler complains
}
public void method2(FinalVariableTest object){
object = new FinalVariableTest();
}
public static void main(String[] args) {
FinalVariableTest test = new FinalVariableTest();
test.method1(test);
}
}
But the compiler is fine with this
public class FinalVariableTest {
public void method1(final FinalVariableTest object){
method2(object);
}
public void method2(FinalVariableTest object){
object = new FinalVariableTest(); //Compiler does not complain
}
public static void main(String[] args) {
FinalVariableTest test = new FinalVariableTest();
test.method1(test);
}
}
What is the reason behind this?