Итак, я работаю на C# в течение нескольких лет, и теперь я работаю на Java. В C# вы можете использовать внутреннее ключевое слово, чтобы скрыть класс/метод из общедоступного представления, но разрешить доступ к определенным ассамблеям/пакетам, если вы его специально предоставляете. Когда я смотрю вокруг в Java, я не вижу ничего, что напрямую совпадает с внутренним.Есть ли способ использовать private-package в java для доступа к другим пакетам?
Я узнал о пакете-приватном. Однако это полностью скрывает его от внешнего мира. Есть ли способ в Java разрешить некоторым другим пакетам доступ ко внутреннему коду, не делая его общедоступным?
Если вы спрашиваете, почему я буду делать это, это, как правило, тестирование на единицу/интеграцию или необходимость иметь определенные, доверенные пакеты для доступа к коду, чтобы не дублировать его. Я знаю, что некоторые люди думают, что вам не следует проверять частный/внутренний код. Я также знаю, что разрешение внутреннего доступа обычно не является хорошим программным обеспечением. Мне не очень интересно обсуждать эти темы, просто любопытно, можете ли вы делать то, что я хочу делать.
Спасибо.
В Java нет механизма для выполнения того, что вы ищете. –
В лучшем случае вы можете защитить свой класс. Тогда он будет доступен для других классов в одном пакете. – Zahrec
В дополнение комментарий @ Zahrec: и он будет доступен для других классов вне пакета, если эти другие классы являются дочерними элементами класса с защищенным членом. Вероятно, это самое близкое, что вы можете дойти до того, что хотите. –