Методы и параметры

Тема дорожной карты · Java

Методы в Java — это именованные, повторно используемые блоки кода, инкапсулирующие конкретное поведение, принимающие типизированные параметры и опционально возвращающие значение, образующие основную единицу поведенческой абстракции в языке Java. Каждый метод Java принадлежит классу или интерфейсу и характеризуется своей сигнатурой — модификатором доступа (public, private, protected), необязательными модификаторами (static, final, synchronized, native), возвращаемым типом, именем и списком параметров — которую JVM использует для диспетчеризации методов и JIT-компиляции. Методы Java поддерживают перегрузку (несколько методов с одним именем, но разными типами параметров) и через наследование — переопределение (подкласс предоставляет специализированную реализацию, помеченную аннотацией @Override), оба из которых являются основой Polymorphism и объектно-ориентированного программирования в Java. Статические фабричные методы, varargs (String... args) и default-методы в интерфейсах (введённые в Java 8) расширяют выразительные возможности методов Java, тогда как Stream API активно опирается на цепочки вызовов методов через Lambda-выражения и ссылки на методы. Понимание того, как методы Java компилируются в байткод, встраиваются JIT-компилятором HotSpot и разрешаются во время выполнения через виртуальную диспетчеризацию (invokevirtual) или интерфейсную диспетчеризацию (invokeinterface), существенно для производительно-ориентированной разработки на JVM.

Как это работает

Методы и параметры покрывает классы (единица компиляции), примитивные типы (int, long, double, boolean — не объекты), reference-типы (объекты, массивы, String — на heap), управление (if/else, switch — теперь со стрелочной формой и pattern matching в 21+), циклы (for, while, for-each), пакеты + импорты, модификаторы доступа (public/protected/package-private/private). Современная Java: var для type inference (10+), текстовые блоки """...""" (15+), records (16+), sealed classes (17+), pattern matching (21+).

Когда применять

Современные фичи — при таргете 17+: records для DTO (срезает 90% бойлерплейта), var для type-inference локальной переменной (когда RHS очевиден), текстовые блоки для multi-line строк, sealed-типы для закрытых иерархий. var — не для полей и возвратов методов (теряется читаемость). Optional — осторожно; никогда .get() без проверки; используйте .orElse(), .map(), .ifPresent().

Типичные ошибки

Ловушки Методы и параметры: сравнение строк == вместо .equals() (классика); примитивные массивы там, где коллекции лучше; игнор Optional и возврат null (NPE-чума продолжается); String s = ""; for(...) s += x; (квадратично — используйте StringBuilder). Читайте Java-туториал для вашей версии; старые туториалы отстают.

Связанные понятия

Полезные ресурсы