首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java getClass().getName()它返回类而不是名称

Java getClass().getName()它返回类而不是名称
EN

Stack Overflow用户
提问于 2014-02-10 06:35:34
回答 2查看 44.1K关注 0票数 0

输出是Card Card。这本应是一个不知名的简。我该如何解决这个问题?我试图用Card.getClass().getName()来解决这个问题,但是这给了我另一个错误:非静态方法getClass()不能从静态上下文中引用。

代码语言:javascript
复制
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") ;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-10 06:41:48

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

只需删除getClass()

代码语言:javascript
复制
public String toString()
{
    return getName();
}

前面的错误(wrt "static")是使用Card.getName() --不要给类型加上前缀来调用实例方法。

票数 8
EN

Stack Overflow用户

发布于 2014-02-10 06:42:10

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

代码语言:javascript
复制
return getClass().getName();

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

代码语言:javascript
复制
return name;
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21666026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档