如何访问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在同一个包中,却不会报错?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
A
B
不同包会报错是因为 A.AInner的构造器是默认构造器,而默认访问级别是允许同包的子类使用的。所以如果你可以改A类那么你可以写个 portected或者public级别的构造器。
如果你不改
A
类,你可以看看这个。我写了一个可以访问的demo。
结构
A类:
B类:
为什么?
protected
可见性范围决定的呀,包内、继承类内可见。怎么访问?如果非要强制访问,通过反射修改可见性即可。