Улучшает ли ключевое слово Java 'final' безопасность? - PullRequest
19 голосов
/ 21 января 2010

Хотя существует много причин использовать ключевое слово 'final' в Java , одна из тех, о которых я постоянно слышу, это то, что это делает ваш код более безопасным. Хотя в этом тривиальном случае это имеет смысл:

public class Password
{
    public final String passwordHash;
    ...
}

С последним ключевым словом вы ожидаете, что никакой вредоносный код не сможет изменить переменную passwordHash. Однако, , используя отражение , можно изменить конечный модификатор в поле passwordHash.

Так что, "final" обеспечивает какую-либо реальную безопасность, или это просто плацебо?

Изменить: Есть действительно интересная дискуссия, и я бы хотел принять более одного ответа. Спасибо всем за ваш вклад.

Ответы [ 12 ]

1 голос
/ 21 января 2010

Final также улучшает управление производительностью и памятью.

1 голос
/ 21 января 2010

Это больше о "изменении" материала, чем о "защите". Последние ключевые слова просто убирают возможность изменять / модифицировать / расширять любой метод.

...