2013-02-26 76 views
1

我想让主调用我的方法getArtist(),但是当我这样做时,它告诉我,我不能从静态上下文中引用非静态方法。我读了一遍,但我仍然不明白,我怎样才能使getArtist()成为一种静态方法,而不用将其命名为public static String getArtist()Java,使方法静态

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; 
} 
+7

“*我如何getArtist()的静态方法,无需将其命名为公共静态字符串getArtist()*?”。不可能。你必须使用'static'关键字。 – mre 2013-02-26 02:17:30

+1

也许你想'myCD.getArtist()' – MadcoreTom 2013-02-26 02:18:24

回答

6

如果这是您CD类代码,你不想做getArtist()静态的,那么替代方法是调用它在一个CD实例。

CD myCD = new CD("Awesomeguy", "AwesomeCDName"); 
mainArtist = myCD.getArtist(); 
1

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

+0

我该如何去创建一个定义getArtist的类的实例? – user1801067 2013-02-26 02:20:48

+0

@ user1801067参见John kuhelman的回答 – James 2013-02-26 02:21:34

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