我有一个nested static class
像:
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
我的代码有什么问题?
你做。
最佳答案
嵌套类使用“$”作为分隔符:
Class.forName("a.b.TopClass$InnerClass");
这样,JRE可以使用点来确定包,而不必担心嵌套类。如果查看生成的类文件,它将发现这个文件,该文件将为
TopClass$InnerClass.class
。(编辑:为原始的不准确性而道歉。在我考虑文件名之前,头卡在了.NET Realm 中。)