输出是卡片卡。这是假设不知道简。我该如何解决?我尝试使用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") ;
}
}
答案 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()
- 不要在类型前面添加实例方法。