我正在尝试使用我的方法getArtist()
进行主调用,但是当我这样做时,它告诉我无法从静态上下文引用非静态方法。我读过但我仍然不明白,如何在不命名getArtist()
的情况下将public static String getArtist()
作为静态方法?
public static void main(String[] args) {
String mainArtist;
String mainTitle;
CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = getArtist();
System.out.println(mainArtist);
}
public String getArtist(){
String person;
person = artist;
return person;
}
答案 0 :(得分:6)
如果这是您的CD
课程中的代码,并且您不想让getArtist()
成为静态代码,那么另一种方法是在CD
实例上调用它。
CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = myCD.getArtist();
答案 1 :(得分:3)
静态意味着该方法是类的一部分而不是对象。 这方面的一个例子就是数学类,你可以直接在类名上调用方法。
Math.round(4);
实例意味着它是对象的一部分,每个实例都有自己的方法版本。要使用实例方法,首先需要创建实例。
Scanner scan = new Scanner();
scan.next();
如果您尝试从静态上下文调用实例方法,则它不知道要对其执行哪个实例,这就是您收到错误的原因。
由于main方法必须是静态的,因此您有两个选项,首先,如果您希望将getArtist
方法作为类的一部分,则将其设置为静态:
public static String getArtist(){
然后你可以像在你的代码中一样调用它:
mainArtist = getArtist();
但是由于你的CD类正在存储数据,所以getArtist
可能更好地成为当前拥有它的实例方法。这意味着您要在实例上调用该方法:
CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = myCD.getArtist();
答案 2 :(得分:1)
使用static关键字或在main中,创建定义getArtist函数的类的实例。
答案 3 :(得分:0)
public static void main(String[] args) {
String mainArtist;
String mainTitle;
CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = myCD.getArtist();
System.out.println(mainArtist);
}
public String getArtist(){
String person;
person = artist;
return person;
}
if you change the method public String getArtist() to public static String getArtist()
then call mainArtist = getArtist();