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