English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Глубокое понимание ключевого слова final в Java

 Подробное объяснение ключевого слова final в Java:

Введение:

Final ключевое слово в Java очень важно и может применяться к классам, методам и переменным. В этой статье я познакомлю вас с тем, что такое final ключевое слово? Что означает объявление переменных, методов и классов как final? Какие преимущества использования final? В конце также есть примеры использования final ключевое слово. Final часто используется вместе с static для объявления констант, и вы также увидите, как final улучшает производительность приложений.

Что означает ключевое слово final?

final в Java - это ключевое слово, которое может использоваться для объявления членов переменных, методов, классов и локальных переменных. Как только вы объявите ссылку как final, вы не сможете изменить эту ссылку, компилятор будет проверять код, и если вы попытаетесь перинициализировать переменную, компилятор выдаст ошибку компиляции.

Что такое final переменная?

Любая переменная, объявленная как final для членов переменных или локальных переменных (вариабли в методах или в блоках кода называются локальными переменными), называется final переменной. Final переменные часто используются вместе с ключевым словом static в качестве констант. Вот пример final переменной:

public static final String LOAN = "loan";
LOAN = new String("loan") //невалидная ошибка компиляции

final переменные являются только читаемыми.

Что такое final метод?

final также может быть использован для объявления методов. Перед методом ставится ключевое слово final, что означает, что этот метод не может быть переопределен методом subclasses. Если вы считаете, что функциональность метода уже достаточна полная и в subclasses не нужно вносить изменений, вы можете объявить этот метод как final. Final методы быстрее, чем nonfinal методы, потому что они статически связаны в компиляции и не требуют динамической связи в время выполнения. Вот пример final метода:

class PersonalLoan{}}
  public final String getName(){
    return "personal loan";
  {}
{}
class CheapPersonalLoan extends PersonalLoan{
  @Override
  public final String getName(){
    return "cheap personal loan"; // компиляционная ошибка: метод, переопределенный, является final}
  {}
{}

Что такое final класс?

Класс, обозначенный ключевым словом final, называется final классом. Final классы обычно полные и не могут быть наследованы. В Java有许多 final классов, таких как String, Interger и другие обертки. Вот пример final класса:

 final class PersonalLoan{
  {}
  class CheapPersonalLoan extends PersonalLoan{ // компиляционная ошибка: не может наследоваться от final класса}
{}

  Преимущества ключевого слова final

Ниже мы кратко рассмотрим некоторые преимущества использования ключевого слова final

  1. Ключевое слово final улучшает производительность. JVM и Java-приложения кэшируют переменные final.
  2. Переменные final могут безопасно использоваться в многопоточных средах без дополнительных затрат на синхронизацию.
  3. Использование ключевого слова final позволяет JVM оптимизировать методы, переменные и классы.

Неизменяемый класс

Для создания неизменяемого класса необходимо использовать ключевое слово final. Неизменяемый класс - это класс, объекты которого после их создания не могут быть изменены. Примером неизменяемого класса является String. Неизменяемые классы имеют множество преимуществ, таких как их объекты являются только читаемыми, могут безопасно совместно использоваться в многопоточных средах, не требуя дополнительных затрат на синхронизацию и т.д.

Важные знания о ключе final

  1. Ключевое слово final может использоваться для членских переменных, локальных переменных, методов и классов.
  2. Переменные-члены final должны быть инициализированы в момент их объявления или в конструкторе, в противном случае будет выведено компиляционное сообщение об ошибке.
  3. Вы не можете повторно присваивать значение переменной final.
  4. Локальные переменные должны быть инициализированы в момент их объявления.
  5. Во всех анонимных классах все переменные должны быть переменными final.
  6. Метод final не может быть переопределен.
  7. Класс final не может быть наследован.
  8. Ключевое слово final отличается от ключевого слова finally, последнее используется для обработки исключений.
  9. Ключевое слово final легко спутать с методом finalize(), который определен в классе Object и вызывается JVM перед garbage collection.
  10. Все переменные, объявленные в интерфейсе, являются final.
  11. Final и abstract эти ключевые слова взаимоисключающие, final класс не может быть abstract.
  12. Final методы связаны на этапе компиляции, что называется статическим связыванием (static binding).
  13. Final переменные, не инициализированные при объявлении, называются пустыми final переменными (blank final variable), они должны быть инициализированы в конструкторе или с помощью вызова this(). В противном случае компилятор выдаст ошибку "final переменная (имя переменной) должна быть инициализирована".
  14. Объявление класса, метода и переменной как final может повысить производительность, так как JVM имеет возможность оценить и оптимизировать.
  15. По惯例 Java, final переменные являются константами, и обычно имена констант должны быть написаны с большой буквы:
private final int COUNT = 10;

Для объекта集合, объявленного как final, это означает, что ссылка не может быть изменена, но вы можете добавить, удалить или изменить содержимое. Например:

private final List Loans = new ArrayList();
list.add(“home loan”); //правильно
list.add("personal loan"); //правильно
loans = new Vector(); //не правильно

Мы уже знаем, что такое переменные final, методы final и классы final. Использование final по мере необходимости позволяет писать быстрее и лучше код.

 Спасибо за чтение, надеюсь, это поможет вам, спасибо за поддержку нашего сайта!

Вам может понравиться