开发者社区> 问答> 正文

如何使用Java Reflection在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的对象

//Teacher_A.java
import Person

public class Teacher_A {
    public static void main(String[] args) {
        //new Teacher Object here ....
    }
}

如何使用Java Reflection做到这一点?

展开
收起
垚tutu 2019-11-28 19:31:59 1030 0
1 条回答
写回答
取消 提交回答
  • #include

    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
              }
        }
    }
    
    2019-11-28 19:32:45
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载