getClass()返回null但Foo.class工作

时间:2015-03-30 14:25:09

标签: java

使用以下内容时,我会获得NullPointerException

Class clazz = Foo.class;
String path = new File(clazz.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

但是,它在我使用时起作用:

String path = new File(Foo.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

围绕NullPointerException

有什么办法吗?

3 个答案:

答案 0 :(得分:3)

您应该在课程的实例上调用getClass()

MyClass myClassInstance = new MyClass();
Class clazz = myClassInstance.getClass();

您正尝试在类对象

上调用它

答案 1 :(得分:1)

您不必在clazz上调用getClass,否则您将获得Class.class而不是Foo.class。

所以它应该是:

Class clazz = Foo.class;
String path = new File(clazz.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()) + "";

答案 2 :(得分:0)

这取决于类的加载方式 - 例如,如果类是从Bootstrap classloader加载的。

请参阅here以获得更完整的答案。