Fornecendo acesso limitado a métodos privados em Java
Em Java, não é diretamente possível replicar o conceito de "amigo" C, o que permite acesso a membros privados de uma classe para entidades externas. No entanto, um comportamento semelhante pode ser alcançado usando técnicas alternativas.
A abordagem da assinatura de amor
Uma abordagem inteligente para obter acesso controlado é usar uma assinatura "secreta". Veja como funciona:
Exemplo:
Considere duas classes, Romeu e Julieta, de pacotes diferentes. Romeo precisa acessar métodos privados em Julieta sem torná-lo uma subclasse.
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 é uma classe pública com um construtor privado, garantindo que apenas Romeo possa criar uma instância.
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); } }
Essa abordagem aproveita a exclusividade do construtor da classe de assinatura para conceder acesso seletivo aos métodos desejados, mantendo o encapsulamento e a privacidade.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3