Proporcionar acceso limitado a métodos privados en Java
En Java, no es directamente posible replicar el concepto de "amigo" de C, que permite acceso a miembros privados de una clase a entidades externas. Sin embargo, se puede lograr un comportamiento similar utilizando técnicas alternativas.
El enfoque de la firma de amor
Un enfoque inteligente para lograr un acceso controlado es utilizar una firma "secreta". Así es como funciona:
Ejemplo:
Considere dos clases, Romeo y Juliet, de diferentes paquetes. Romeo necesita acceder a métodos privados en Julieta sin convertirlo en una subclase.
Código de Julieta:
// 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 es una clase pública con un constructor privado, lo que garantiza que solo Romeo pueda crear una instancia.
Código de Romeo:
// 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); } }
Este enfoque aprovecha la exclusividad del constructor de clases de firma para otorgar acceso selectivo a los métodos deseados mientras se mantiene la encapsulación y la privacidad.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3