2014-02-09 257 views
0

輸出是Card Card。它被認爲是不爲人知的簡。我該如何解決?我試圖用Card.getClass()。getName()修復它,但那給了我另一個錯誤非靜態方法getClass()不能從靜態上下文中引用。Java getClass()。getName()它返回的類不是名稱

public class Card 

{ 
    private String name; 

    public Card() 
    { 
     name = "unknown"; 
    } 

    public Card(String name1) 
    { 
     name = name1 ; 
    } 

    public String getName() 
    { 
     return name; 
    } 

    public String toString() 
    { 
     return getClass().getName(); 
    } 
} 

public class CardTester 
{ 
    public static void main(String[] args) 
    { 
     Card card ; 

     card = new Card() ; 
     System.out.println(card) ; 
     System.out.println("unknown WAS EXPECTED") ; 

     card = new Card("Jane") ; 
     System.out.println(card) ; 
     System.out.println("Jane WAS EXPECTED") ; 
    } 
} 

回答

7

getClass()返回表示 「卡」 類Class object;因此代碼而不是參考Card#getName方法,而是Class#getName其忠實地返回「卡」。

只需刪除getClass()

public String toString() 
{ 
    return getName(); 
} 

以前的錯誤(WRT 「靜態」)採用Card.getName() - 不要在它前面加上來調用實例方法。

9

toString()方法打印對象的類的名稱:

return getClass().getName(); 

的對象是Card一個實例,因此它的類是Card.class,他的名字是Card。您想要打印名稱字段的值。所以你只需要

return name; 
相關問題