假设我有一个带有以下代码的“ Person.java”:
//Person.java
public class Person{
protected Person(String x, String y){
.....
}
private static class Teacher
private Teacher(String x, String y){
.....
}
}
}
并且我想在“ Teacher_A.java”中创建静态嵌套类Teacher的对象
//Teacher_A.java
import Person
public class Teacher_A {
public static void main(String[] args) {
//new Teacher Object here ....
}
}
如何使用Java Reflection做到这一点?
1、您无法访问Teacher类,Teacher_A因为您已定义如下:
私人静态班老师
嵌套类的行为仅类似于class的成员,因此,如果嵌套类是私有的,则可以在类外部访问它。
有关更多详细信息,请参见嵌套类。
2、假设您将访问说明符从private更改为package或public,但仍无法创建Teacher类的对象,因为您已将构造函数设置为private:
私人老师(字符串x,字符串y)
从JLS 6.6.1起。确定可访问性
如果成员或构造函数被声明为私有,则仅当访问发生在封装成员或构造函数的声明的顶级类(第7.6节)的主体内时,才允许访问。
但是无论如何,如果您想运行此更改,则访问控制1例如:
package sample;
import sample.Person.Teacher;
public class Teacher_A {
public static void main(String[] args) {
//new Teacher Object here ....
Teacher aa = new Teacher(null,null);
}
}
package sample;
public class Person{
protected Person(String x, String y){
//your code
}
static class Teacher{
Teacher(String x, String y){
//your code
}
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。