java - 如何使用 Java 反射在 Java 中创建嵌套静态类的新对象
问题描述
假设我有一个带有以下代码的“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_A.java
import Person
public class Teacher_A {
public static void main(String[] args) {
//new Teacher Object here ....
}
}
如何使用 Java 反射做到这一点?
解决方案
您无法访问
Teacher
课程,Teacher_A
因为您已定义如下:私人静态班级教师
嵌套类的行为类似于仅类的成员,因此如果您的嵌套类是私有的,那么您可以在类外访问它。
有关更多详细信息,请参阅嵌套类
假设您将访问说明符从私有更改为包或公共仍然无法创建
Teacher
类的对象,因为您已将构造函数设为私有:私人教师(字符串 x,字符串 y)
如果成员或构造函数被声明为私有,则当且仅当它出现在包含成员或构造函数声明的顶级类(第 7.6 节)的主体内时,才允许访问。
但无论如何,如果您想运行此更改 Access Control 1 ex:
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
}
}
}