java - 如何在 Java 中加载嵌套类?

标签 java static inner-classes

我有以下java代码:

public class CheckInnerStatic {

private static class Test {
    static {
        System.out.println("Static block initialized");
    }
    public Test () {
        System.out.println("Constructor called");
    }
}

    public static void main (String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        System.out.println("Inside main");
        Class.forName("Test");    // Doesn't work, gives ClassNotFoundException
        //Test test = new Test();   // Works fine
    }
}

为什么 class.forName("Test") 在这里不工作,而下一行工作正常?

最佳答案

使用Outer$Nested(不管嵌套类是否是静态的)

public class CheckInnerStatic {

    private static class Test {
    static {
        System.out.println("Static block initialized");
    }
    public Test () {
        System.out.println("Constructor called");
    }
}

    public static void main (String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        System.out.println("Inside main");
        Class<?> cls = Class.forName("CheckInnerStatic$Test");
        //Test test = new Test();
    }
}

关于java - 如何在 Java 中加载嵌套类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828884/

相关文章:

java - 如何使Map的特化变得不可修改?

java - 使用 Cordova 3.1 CLI 构建 Android 应用程序时出错

初始化组合框时抛出 Java 内存不足异常

php - 在 PHP 中, "final static"和 "const"有什么区别?

class - swift 有类级别的静态变量吗?

java - 如何在匿名类中引用更高的类

java - 在内部类中执行main方法

java - 多生产者和消费者多线程 Java 未按预期工作

java - 如何以及在何处使用 Java 中的静态修饰符?

java - 在其中创建静态嵌套类的实例