反射抛出异常。为什么?

时间:2013-11-06 07:22:18

标签: java

好的,例如我有这段代码:

class Document {

// blablabla

}

和我的主要:

Object cl =Class.forName("Document"); // throws ClassNotFoundException: Document

为什么找不到我的班级定义?

2 个答案:

答案 0 :(得分:5)

你应该用它的完全限定名称来引用你的课程:

Object cl =Class.forName("org.yourpackage.Document");

答案 1 :(得分:2)

我的猜测是这个类实际上是在一个包中。 Class.forName采用完全限定名称,作为文档:

  

参数:
   className - 所需类的完全限定名称。

例如:

package foo.bar;

class Document {}

...

Class<?> clazz = Class.forName("foo.bar.Document");

如果它是嵌套类,您还需要考虑到这一点:

package foo.bar;

class Outer {
    static class Document {
    }
}

...

Class<?> clazz = Class.forName("foo.bar.Outer$Document");