Как мне обойти защищенные правила видимости? - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть два класса в разных пакетах, один из которых является подтипом другого.У меня проблемы с использованием лучшего модификатора доступа для конкретного метода.Общая структура моей проблемы показана ниже.

 package p1;
 public class Type1 {
      protected void m() {

      }
 }


 package p2;
 public class Type2 extends Type1 {
      private List<Type1> component;

      protected void m() {
            for(Type1 type1Instance : component) 
                  type1Instance.m(); //m() in Type1 is not visable
      }
 }

Проблема в том, что метод m() не отображается в этой настройке, поскольку код неучаствует в реализации Type1.Это объясняется в документации Java здесь с примером здесь (см. Метод delta в примере).

Я вижу два решения: оба из которыхМне не нравится.Я мог бы сделать m() в Type1 публичным, но я не хочу, чтобы этот метод был частью API.Я также мог бы переместить оба этих класса в один и тот же пакет и использовать модификатор доступа по умолчанию, но это потребовало бы перемещения многих классов в моем реальном проекте в один и тот же пакет, что означает, что я потерял некоторую организацию.

Есть лилучший способ справиться с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...