0

我试图让 main 调用我的方法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;
}
4

4 回答 4

6

如果这是来自您的CD类的代码,并且您不想将其设为getArtist()静态,那么另一种方法是在CD实例上调用它。

CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = myCD.getArtist();
于 2013-02-26T02:18:24.973 回答
3

静态意味着该方法是类而不是对象的一部分。这方面的一个例子是数学类,您可以直接在类名上调用方法。

Math.round(4);

实例意味着它是对象的一部分,每个实例都有自己的方法版本。要使用实例方法,您需要先创建一个实例。

Scanner scan = new Scanner();
scan.next();

如果您尝试从静态上下文调用实例方法,那么它不知道要针对哪个实例运行它,这就是您收到错误的原因。

由于主方法必须是静态的,因此您有两个选择,首先,如果您希望该getArtist方法作为类的一部分,则将其设为静态:

public static String getArtist(){

然后你可以在你的代码中调用它:

mainArtist = getArtist();

但是由于您的 CD 类正在存储数据,因此getArtist作为您当前拥有的实例方法可能会更好。这意味着您要在实例上调用该方法:

CD myCD = new CD("Awesomeguy", "AwesomeCDName");
mainArtist = myCD.getArtist();
于 2013-02-26T02:29:30.567 回答
1

使用 static 关键字或在 main 中,创建定义 getArtist 函数的类的实例。

于 2013-02-26T02:19:10.363 回答
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();
于 2013-02-26T05:39:26.840 回答