Зачем кому-то делать дополнительную локальную переменную просто для того, чтобы добавить в нее ключевое слово final? - PullRequest
4 голосов
/ 20 июня 2010

Я встречал код, подобный этому:

public void foo(String param1) { 
    final String param1F = param1;
    ...
}

Я сомневаюсь, что автор не знает, что он может поместить ключевое слово final непосредственно в причину сигнатуры метода, в остальной части метода он использует только param1F, но мне любопытно, если у кого-нибудь есть идея, что это может быть полезно

Ответы [ 3 ]

2 голосов
/ 20 июня 2010

Это необходимо, если вам нужен доступ к переменной из анонимного класса, например ::

Runnable f(int i) {
    final int i2 = i;
    return new Runnable() {
        public void run() {
            System.out.println(i2);
        }
    };
}
0 голосов
/ 20 июня 2010

возможно, это только я, но я чувствую себя странно, когда пишу в параметры метода или объявляю их окончательными.Я думаю, что они должны быть окончательными по умолчанию.они не должны быть «переменными»

0 голосов
/ 20 июня 2010

В этом случае вы можете переназначить param1, что было бы невозможно, если бы param1 было окончательным.

Так что есть небольшая разница.Но для меня это бесполезно, просто потому, что я не изменяю параметры метода в целом.

...