我有一个嵌套的静态类
,比如:
package a.b
public class TopClass {
public static class InnerClass {
}
}
我想用 Class.forName()
进行实例化,但它会引发 ClassNotFoundException
。
Class.forName("a.b.TopClass"); // Works fine.
Class.forName("a.b.TopClass.InnerClass"); // raises exception
TopClass.InnerClass instance = new TopClass.InnerClass(); // works fine
我的代码有什么问题?
Udo。
最佳答案
嵌套类使用“$”作为分隔符:
Class.forName("a.b.TopClass$InnerClass");
这样 JRE 可以使用点来确定包,而不必担心嵌套类。如果您查看生成的类文件,您会发现这一点,该文件将是 TopClass$InnerClass.class
。
(编辑:对最初的不准确表示歉意。在我考虑文件名之前,Head 一直停留在 .NET 领域……)
关于java - 使用 Class.forName 实例化嵌套的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007831/