АДРЕСАЦІЯ ПРОБЛЕМИ ЗВІТНОГО КЛАСУ:
Існує два способи зробити підсумковий клас. Перший - використовувати ключове слово final у декларації класу:
public final class SomeClass {
// . . . Class contents
}
Другий спосіб зробити остаточний клас - оголосити всіх його конструкторів приватними:
public class SomeClass {
public final static SOME_INSTANCE = new SomeClass(5);
private SomeClass(final int value) {
}
Позначення його остаточним позбавить вас від неприємностей, якщо дізнаєтесь, що це фактичний фінал, щоб продемонструвати погляд на цьому тестовому класі. на перший погляд виглядає публічно.
public class Test{
private Test(Class beanClass, Class stopClass, int flags)
throws Exception{
// . . . snip . . .
}
}
На жаль, оскільки єдиний конструктор класу є приватним, розширити цей клас неможливо. У випадку з тестовим класом немає причини, щоб клас був остаточним. Тест-клас є хорошим прикладом того, як неявні підсумкові класи можуть викликати проблеми.
Тож слід відзначити його остаточним, коли ви неявно робите остаточний клас, роблячи його конструктором приватним.