찾다

 >  Q&A  >  본문

java - 如何访问protected静态内部类?

如何访问一个受保护的静态内部类?

public class A{
    protected static class AInner{
        public void test(){
        }
    }
}
public class B extends A{
    public void hello(){
        //怎样才能访问AInner中的test方法呢?
    }
}

为什么当A和B在不同包中时,new AInner().test()会编译报错呢?
而当A和B在同一个包中,却不会报错?

高洛峰高洛峰2887일 전317

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 17:50:11

    A B A.AInner의 생성자가 기본 생성자이고 기본 액세스 수준에서는 동일한 패키지의 하위 클래스가 을 사용할 수 있으므로 여러 패키지에서 오류를 보고합니다.
    따라서 클래스 A를 변경할 수 있다면 이식된 생성자 또는 공개 수준 생성자를 작성할 수 있습니다.

    으아악

    A 클래스를 바꾸지 않으면 이렇게 보시면 됩니다.
    접근 가능한 데모를 작성했습니다.

    구조

    카테고리 A:

    으아악

    카테고리 B:

    으아악

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 17:50:11

    왜요? protected가시 범위는 패키지 및 상속된 클래스 내에서 표시되는 가시 범위에 따라 결정됩니다.
    접근 방법은 무엇인가요? 강제로 액세스해야 하는 경우 리플렉션을 통해 가시성을 수정하면 됩니다.

    회신하다
    0
  • 취소회신하다