Java,使方法静态

时间:2013-02-26 02:15:45

标签: java methods static

我正在尝试使用我的方法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 个答案:

答案 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();