Я также ищу точный ответ, вот как я понял это так далеко от Google:
В математике вырождение означает предельный случай , в котором класс объекта меняет свою природу, чтобы принадлежать другому, обычно проще, классу .
- точка является вырожденным случаем окружности, когда радиус приближается к 0
- круг является вырожденной формой эллипса, когда эксцентриситет приближается к 0
В программировании, следуя этой концепции «свертывания» в нечто более простое, вырождение, по-видимому, используется несколькими способами:
1. Класс без методов или просто метод main:
Большая Ява:
Наконец, вы видели классы только с основным методом. Их единственная цель - запустить программу. С точки зрения дизайна, это несколько вырожденные примеры классов.
Effective Java 2nd edition:
Элемент 14: В открытых классах использовать методы доступа, а не открытые поля
Иногда у вас может возникнуть желание написать вырожденные классы, которые
не служат никакой цели, кроме как группировать поля экземпляра:
// Degenerate classes like this should not be public!
class Point {
public double x;
public double y;
}
2. Класс с меньшей специфичностью, который заставляет его вести себя как другой более простой класс:
Изучение Java:
Например, класс List и List совместно используют простой старый класс Java List. Список называется необработанным типом универсального класса. Каждый дженерик имеет сырой тип. Это вырожденная «простая» форма Java , из которой была удалена вся информация об универсальном типе и переменные типа заменены общим типом Java, таким как Object.
Effective Java 2nd edition:
// The worst possible legal hash function - never use!
@Override public int hashCode() { return 42; }
Это законно, поскольку гарантирует, что равные объекты имеют одинаковый хэш-код. Это ужасно, потому что гарантирует, что каждый объект имеет одинаковый хэш-код. Следовательно, каждый объект хешируется в одно и то же ведро, и хеш-таблиц вырождаются в связанные списки .
3. Самый простой, самый пустой экземпляр класса из возможных:
Большая Ява:
Однако иногда вы сталкиваетесь с философскими вопросами, касающимися вырожденных входных данных: пустых строк, фигур без области и т. Д.