السلام عليكم,
ما أعرفه أن متغير final لا يمكن تغييره،
إلا أني اكتشفت متغيراً final نستطيع تغييره في class java.lang.System،
المتغيرات System.out و System.err و System.in كلها public final ولا يمكن تغييرها بالجملة الآتية
System.out=new PrintStream(new SomeOutputStream());//wrong
يصدر
Compile Error : Cannot assign to final variable System.out
ولكنك تستطيع تغيير System.out باستخدام الوسيلة
System.setOut(PrintStream ps);//correct
كيف هذا؟