В моем проекте Java у меня есть метод addType1AndType2()
, в котором есть окна, где вы разворачиваете списки и выбираете объекты из списка. Это было очень сложным и трудоемким для создания, поскольку вещи должны быть прокручены, а xpaths продолжают меняться. В этом списке есть два списка, которые являются фактическими именами, но из-за собственной информации о компании я просто назову их Tyep1
и Type2
.Как запретить подкласс использовать метод?
Теперь у меня есть класс UpdateType1
, который использует всю сложную методологию в AddType1AndType2
, но не имеет ничего общего с Type2
. Я мог бы скопировать AddType1AndType2
и вырезать все, что мне не нужно, но это будет репликация, и изменения должны быть дублированы в обоих классах. Это побеждает цель наследования и повторного использования.
Я могу сделать class UpdateType1 extends AddType1AndType2{}
, который я сделал. Но есть еще такие методы, как selectType2Value()
, которые наследуются, но недоступны в подклассе.
Если я делаю @Override
и объявляю класс приватным в подклассе, я получаю сообщение об ошибке, которое я не могу уменьшить видимость в подклассе.
Любая идея, что я могу сделать? Прямо сейчас я просто помещаю throw new AssertError("Do not use")
, но это похоже на хромых. Есть ли лучшее, что можно было бы сделать, это даже даст ошибку времени компиляции, а не утверждение во время выполнения, или это лучший способ?
Объявить метод final https://docs.oracle.com/javase/tutorial/java/IandI/final.html – Kon
Я также не вижу исключения в качестве лучшего решения. Тем не менее, рассмотрите возможность использования 'java.lang.UnsupportedOperationException'. Это так же слабо, но более интегрировано с существующей средой. – bruno
Боковое примечание при именовании: имена методов go camelCase в java. – GhostCat