如何访问一个受保护的静态内部类?
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在同一个包中,却不会报错?
PHP中文网2017-04-17 17:50:11
A
B
A.AInner의 생성자가 기본 생성자이고 기본 액세스 수준에서는 동일한 패키지의 하위 클래스가 을 사용할 수 있으므로 여러 패키지에서 오류를 보고합니다.
따라서 클래스 A를 변경할 수 있다면 이식된 생성자 또는 공개 수준 생성자를 작성할 수 있습니다.
A
클래스를 바꾸지 않으면 이렇게 보시면 됩니다.
접근 가능한 데모를 작성했습니다.
구조
카테고리 A:
으아악카테고리 B:
으아악怪我咯2017-04-17 17:50:11
왜요? protected
가시 범위는 패키지 및 상속된 클래스 내에서 표시되는 가시 범위에 따라 결정됩니다.
접근 방법은 무엇인가요? 강제로 액세스해야 하는 경우 리플렉션을 통해 가시성을 수정하면 됩니다.