> Java > java지도 시간 > 'Friend' 개념을 사용하지 않고 Java의 개인 메소드에 대한 제한된 액세스를 어떻게 얻을 수 있습니까?

'Friend' 개념을 사용하지 않고 Java의 개인 메소드에 대한 제한된 액세스를 어떻게 얻을 수 있습니까?

Patricia Arquette
풀어 주다: 2024-11-12 11:50:02
원래의
619명이 탐색했습니다.

How Can I Achieve Limited Access to Private Methods in Java Without Using the

Java에서 비공개 메소드에 대한 제한된 액세스 제공

Java에서는 C "friend" 개념을 직접 복제하는 것이 불가능합니다. 외부 엔터티에 대한 클래스의 비공개 멤버에 대한 액세스입니다. 그러나 대체 기술을 사용하면 유사한 동작을 달성할 수 있습니다.

러브 서명 접근 방식

액세스 제어를 달성하는 영리한 접근 방식 중 하나는 "비밀" 서명을 사용하는 것입니다. 작동 방식은 다음과 같습니다.

  1. 한 패키지에 다른 패키지의 비공개 메서드에 액세스하는 데 필요한 "비밀 서명"을 나타내는 공개 클래스를 만듭니다. 이 서명 클래스는 독점성을 보장하기 위해 비공개 생성자를 포함할 수 있습니다.
  2. 비공개 멤버에 액세스해야 하는 클래스에서 서명 클래스의 인스턴스를 매개변수로 허용하는 공개 메서드를 정의합니다.
  3. 다른 패키지의 공개 메소드에서 서명 클래스 인스턴스는 호출을 허용하는 "증거" 역할을 합니다.

예:

두 클래스 Romeo를 생각해 보세요. 그리고 다른 패키지의 Juliet. Romeo는 하위 클래스로 만들지 않고 Juliet의 비공개 메서드에 액세스해야 합니다.

Juliet의 코드:

// 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는 비공개 생성자가 있는 공개 클래스입니다. Romeo만 인스턴스를 생성할 수 있도록 보장합니다.

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);
    }
}
로그인 후 복사

이 접근 방식은 서명 클래스 생성자의 독점성을 활용하여 원하는 메서드에 대한 선택적 액세스 권한을 부여합니다. 캡슐화와 개인 정보 보호를 유지하면서.

위 내용은 'Friend' 개념을 사용하지 않고 Java의 개인 메소드에 대한 제한된 액세스를 어떻게 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿