我有一个类,必须有一些静态方法。在这些静态方法中,我需要调用方法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
修复此编译时错误的适当方法是什么?
getClass()方法在Object类中定义,具有以下签名:
getClass()
因为它没有被定义为静态的,所以不能在静态代码块中调用它。更多信息请看这些答案:Q1, Q2, Q3。
如果你在一个静态的上下文中,那么你必须使用类文字表达式来获取类,所以你基本上必须这样做:
Foo.class
这种类型的表达式被称为类字面量,它们在Java语言规范书中解释如下:
类字面值是由类、接口、数组或基本类型的名称后跟'组成的表达式。'和令牌类。类文字的类型是class。它为当前实例的类的定义类装入器所定义的命名类型(或void)求值为Class对象。
您还可以在类的API文档中找到有关此主题的信息。
getClass()方法在Object类中定义,具有以下签名:
getClass()
因为它没有被定义为静态的,所以不能在静态代码块中调用它。更多信息请看这些答案:Q1, Q2, Q3。
如果你在一个静态的上下文中,那么你必须使用类文字表达式来获取类,所以你基本上必须这样做:
Foo.class
这种类型的表达式被称为类字面量,它们在Java语言规范书中解释如下:
类字面值是由类、接口、数组或基本类型的名称后跟'组成的表达式。'和令牌类。类文字的类型是class。它为当前实例的类的定义类装入器所定义的命名类型(或void)求值为Class对象。
您还可以在类的API文档中找到有关此主题的信息。