我有一个类,必须有一些静态方法。在这些静态方法中,我需要调用方法getClass()来进行以下调用:

public static void startMusic() {
  URL songPath = getClass().getClassLoader().getResource("background.midi");
}

但是Eclipse告诉我:

Cannot make a static reference to the non-static method getClass() 
from the type Object

修复此编译时错误的适当方法是什么?


当前回答

假设有一个Utility类,那么示例代码将是-

    URL url = Utility.class.getClassLoader().getResource("customLocation/".concat("abc.txt"));

CustomLocation -如果资源中有任何文件夹结构,则删除此字符串文字。

其他回答

简单地使用类文字,即NameOfClass.class

试一试

Thread.currentThread().getStackTrace()[1].getClassName()

Or

Thread.currentThread().getStackTrace()[2].getClassName()

假设有一个Utility类,那么示例代码将是-

    URL url = Utility.class.getClassLoader().getResource("customLocation/".concat("abc.txt"));

CustomLocation -如果资源中有任何文件夹结构,则删除此字符串文字。

在Java7+中,你可以在静态方法/字段中做到这一点:

MethodHandles.lookup().lookupClass()

我也有同样的问题! 但要解决它,只需修改您的代码如下。

public static void startMusic() {
URL songPath = YouClassName.class.getClassLoader().getResource("background.midi");
}

这对我来说很好,希望它也会对你很好。