Java getClass()。getName()它返回的类不是名称

时间:2014-02-09 22:35:34

标签: java

输出是卡片卡。这是假设不知道简。我该如何解决?我尝试使用Card.getClass()。getName()修复它但是这给了我另一个错误非静态方法getClass()无法从静态上下文中引用。

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") ;
    }
}

2 个答案:

答案 0 :(得分:9)

您的toString()方法打印对象类的名称:

return getClass().getName();

该对象是Card的一个实例,因此其类为Card.class,其名称为Card。您想要打印名称字段的值。所以你只需要

return name;

答案 1 :(得分:7)

getClass()返回代表“卡片”类的Class object;因此,代码引用Card#getName方法,而是引用Class#getName,它尽职地返回“卡”。

只需删除getClass()

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

上一个错误(wrt“static”)正在使用Card.getName() - 不要在类型前面添加实例方法。