Регистрация  |  Вход

Модификатор "final" реально игнорируется компилятором ?

Компилятор апекса совершенно игнорирует перезапись финальных полей, и локальных переменных. Это нормальное явление? Код приведенный ниже удачно компилируется.

Это бага ихнего компилятора? или нормально?


public class TestFinalModifier {
public static String notFinalStr = '';
public static final String str = '';

{
str = 'sss';
str = 'dddd';

final String aa = '';
aa = 'dd';
aa = 'ff';
}

{
str = '5';
}
}

Компилятор апекса совершенно игнорирует перезапись финальных полей, и локальных переменных. Это нормальное явление? Код приведенный ниже удачно компилируется.

Это бага ихнего компилятора? или нормально? 


[code]public class TestFinalModifier {
  public static  String notFinalStr = '';
  public static final String str = '';
    
    {
        str = 'sss';
        str = 'dddd';
        
        final String aa = '';
        aa = 'dd';
        aa = 'ff';
    }
    
    {
        str = '5';
    }
}[/code]


Static final variables can be changed in static initialization code or where defined.
Member final variables can be changed in initialization code blocks, constructors, or with other variable declarations.

Глянул в доку. Я почему-то посчитал что тут поведение от Java не отличается - но нет :)

[quote]Static final variables can be changed in static initialization code or where defined.
Member final variables can be changed in initialization code blocks, constructors, or with other variable declarations.[/quote] 

Глянул в доку. Я почему-то посчитал что тут поведение от Java не отличается - но нет :)

Да, есть такое дело.

Да, есть такое дело.