输出是Card Card。这本应是一个不知名的简。我该如何解决这个问题?我试图用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") ;
}
}发布于 2014-02-10 06:41:48
getClass()返回代表"Card“类的Class object;因此代码不引用Card#getName方法,而是引用Class#getName,它会尽职地返回"Card”。
只需删除getClass()
public String toString()
{
return getName();
}前面的错误(wrt "static")是使用Card.getName() --不要给类型加上前缀来调用实例方法。
发布于 2014-02-10 06:42:10
toString()方法打印对象的类名:
return getClass().getName();该对象是Card的一个实例,因此它的类是Card.class,其名称是Card。您希望打印name字段的值。所以你只需要
return name;https://stackoverflow.com/questions/21666026
复制相似问题