2013-03-13 2 views
2

У меня есть класс U, а в constuctor класса я вызываю переопределяемый метод, который является общедоступным. NetBeans предупреждает меня: Overridable method call in constructorПереопределяемый вызов метода в конструкторе

Однако, я не переопределить метод в моем проекте, так как класс U не имеют подклассов .. Допустимо ли оставить его, как это? .... вызывать переопределяемый метод в конструкторе в этом случае?

+0

Возможные дубликаты: [Что не так с overridable вызовами методов в конструкторах?] (Http://stackoverflow.com/questions/3404301/whats-wrong-with-overridable-method-calls-in-constructors), [Как Исправить «Метод переопределения конструктора»] (http://stackoverflow.com/questions/10337011/how-to-fix-constructor-calls-overridable-method). См. Также: [Конструкторы не должны вызывать overridables] (http://www.javapractices.com/topic/TopicAction.do?Id=215). – ZeroOne

+0

проверьте этот http://stackoverflow.com/questions/3404301/whats-wrong-with-overridable-method-calls-in-constructors – pomkine

ответ

1

Это предупреждение, а не ошибка, поэтому вы можете просто оставить его таким. Однако, если вы опубликуете этот код, кто-то может расширить ваш класс U, переопределить метод и получить много неприятностей.

3

Это не ошибка. Вы можете игнорировать это.

Если вы хотите сделать компилятор счастливым, сделайте любой способ или весь класс final.

1

Как уже упоминалось, вы можете «игнорировать» предупреждение.

Однако вы делаете это на свой страх и риск, так как ошибки могут появиться позже. Причиной предупреждения является то, что компилятор не может доказать, что ссылка на «это» не удастся избежать конструктора. Это может привести к ошибкам, так как создаваемый объект еще не полностью сконструирован и, следовательно, объект может находиться в недопустимом состоянии.

Смежные вопросы