Предоставление ограниченного доступа к частным методам в Java
В Java невозможно напрямую воспроизвести концепцию «друга» C, которая позволяет доступ к закрытым членам класса к внешним сущностям. Однако аналогичного поведения можно добиться, используя альтернативные методы.
Подход «Любовная подпись»
Один умный подход к обеспечению контролируемого доступа — использование «секретной» подписи. Вот как это работает:
Пример:
Рассмотрим два класса, Romeo и Джульетта из разных пакетов. Ромео необходимо получить доступ к частным методам Джульетты, не превращая их в подкласс.
Код Джульетты:
// Capulet package public class Juliet { public static void cuddle(Romeo.Love love) { Objects.requireNonNull(love); // Juliet's private methods can be accessed here. } }
Romeo.Love — это открытый класс с частным конструктором, поэтому только Ромео может создать экземпляр.
Код Ромео:
// Montague package public class Romeo { public static final class Love { private Love() {} } private static final Love love = new Love(); public static void cuddleJuliet() { Juliet.cuddle(love); } }
Этот подход использует эксклюзивность конструктора класса подписи для предоставления выборочного доступа к нужным методам, сохраняя при этом инкапсуляцию и конфиденциальность.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3