Правильно ли называть конечное свойство переменным, несмотря на то, что оно является константой? - PullRequest
0 голосов
/ 05 ноября 2019

Я видел, как многие люди звонили, например:

final String foo = "foo"; 

"Последняя переменная".

Однако я совершенно не согласен. Когда тип данных в Java имеет окончательный модификатор, я сразу называю его «Константа». Переменная не может быть константой (совершенно нелогичной).

Я ошибаюсь?

1 Ответ

5 голосов
/ 05 ноября 2019

В то время как в отрасли мы все используем, как правило, смешиваем имена, но, вообще говоря, разница между «конечной переменной» и «константой» заключается в том, что «константа» известна во время компиляции, а конечная переменная - нет.

Взгляните на этот пример:

@Test
public void testMe() {
    class A {
        final String foo;
        A(int i) {
            foo = (i > 10) ? "foo" : "bar";
        }

        void print() {
            System.out.println(foo);
        }
    }

    A a1 = new A(20);
    A a2 = new A(5);
    a1.print();
    a2.print();

}

Этот код компилирует и производит следующий вывод:

foo
bar

Так что технически это может быть вызвано как финальная переменная.

Даже если вы присваиваете значение немедленно:

final String foo2 = "foo2";

Технически возможно написать что-то вроде этого (я полностью согласен):

final String foo2 = SOME_VAR > 5 ? "foo2" : "bar2";
...