Подтвердить что ты не робот

Исправлена ​​ошибка с ошибкой "Метод не разработан для расширения"?

Я использую Checkstyle и получаю ошибку об этом методе:

public final String getAdmitCodeStatus() {
    return admitCodeStatus;
}

Вот ошибка, которую я получаю:

Метод getAdmitCodeStatus не предназначен для расширения - должен быть абстрактным, окончательным или пустым.

Как этот метод несовместим? Есть ли что-то, что я делаю неправильно, что Checkstyle будет лаять на меня об этом методе?

4b9b3361

Ответ 1

Он выглядит вызванным правилом DesignForExtension. Согласно документации:

Проверяет, что классы предназначены для расширения. Более конкретно, это применяет стиль программирования, где суперклассы предоставляют пустые "крючки", которые могут быть реализованы подклассами.

Точное правило заключается в том, что непривилегированные, нестатические методы классов, которые может быть подклассифицировано либо должно быть

abstract or
final or
have an empty implementation

Обоснование: этот стиль дизайна API защищает суперклассы от beeing разбиты на подклассы. Недостатком является то, что подклассы ограничены в их гибкость, в частности они не могут предотвратить выполнение кода в суперклассе, но это также означает, что подклассы не могут коррумпироваться состояние суперкласса, забыв назвать супер-метод.

Источник: http://sonar.15.n6.nabble.com/design-for-extension-rule-tp3200037p3200043.html

Но поскольку у вас есть модификатор final, я бы сказал, что вы обнаружили ошибку и, возможно, захотите записать отчет об ошибке. https://github.com/checkstyle/checkstyle/issues

Ответ 2

На первый взгляд это выглядит так, как на земле стиль программирования - это... Это просто проверяет, наследуете ли вы методы наследования или нет... и затем вы можете объявить их final,abstract or empty implementation. Тогда вы объявляете его окончательным...;) Либо класс может быть конечным, либо индивидуальным методом в зависимости от сценария требований.

Ответ 3

Я думаю, что эта проверка полезна и в большинстве случаев предупреждение оправдано. Иногда это не подходит, и я игнорирую его.