Ответ
Сигнатура класса (class signature) — это уникальный идентификатор класса, который определяет его внешний контракт (API) без раскрытия внутренней реализации. Она включает элементы, видимые извне и необходимые для использования класса.
Элементы сигнатуры класса:
- Модификаторы доступа:
public,protected,privateили package-private (по умолчанию). - Ключевые слова:
abstract,final,strictfp. - Имя класса.
- Параметры типа (Generics): Например,
<T>,<K, V extends Comparable>. - Родительский класс (наследование): Ключевое слово
extendsи имя суперкласса (если есть). - Реализуемые интерфейсы: Ключевое слово
implementsи список интерфейсов.
Что НЕ входит в сигнатуру: тело класса, поля, методы, конструкторы, инициализаторы.
Примеры:
// Сигнатура: public final class UtilityClass
public final class UtilityClass { /* ... */ }
// Сигнатура: abstract class Shape implements Drawable
abstract class Shape implements Drawable { /* ... */ }
// Сигнатура: public class Repository<T extends Entity> extends AbstractDAO<T> implements Serializable
public class Repository<T extends Entity> extends AbstractDAO<T> implements Serializable {
// Поля и методы НЕ являются частью сигнатуры класса.
private List<T> storage;
public void save(T item) { ... }
}
Практическое значение: Сигнатура класса используется компилятором для проверки типов, разрешения перегрузки методов и обеспечения правильности наследования. Изменение сигнатуры (например, удаление интерфейса) является ломающим изменением (breaking change) для клиентского кода.