如何打印Java对象而不获取“;something@677327b6”;没有覆盖?

如何打印Java对象而不获取“;something@677327b6”;没有覆盖?,java,overriding,tostring,hashcode,Java,Overriding,Tostring,Hashcode,我已定义此方法: @Override public String toString(String line) { String[] categories = line.split("; "); String[] info; // Get the suspect's information info = categories[0].split(", "); suspect = new Pers

我已定义此方法:

    @Override
    public String toString(String line)
    {
        String[] categories = line.split("; ");
        String[] info;

        // Get the suspect's information
        info = categories[0].split(", ");
        suspect = new Person(info[0].charAt(0), Integer.parseInt(info[1]), Double.parseDouble(info[2]));
        String str = "";
        if (info[0].charAt(0) == 'M')
            str += "Male, ";
        else if (info[0].charAt(0) == 'F')
            str += "Female, ";
        else
            str += "unknown, ";
        str += Integer.parseInt(info[1]) + "'s, ";
        str += Double.parseDouble(info[2]) +"m";
        System.out.println(str);
        return str;
    }
}
当我在添加
@Override
之前通过命令行运行此命令时,我得到的输出与此类似:
Detective@677327b6
在终端中

我知道这是正在输出的哈希代码。 但是,我需要它来打印str,正如我在toString()方法中定义的那样

问题是Detective类型的toString(String)方法必须重写或实现超类型方法,我唯一的解决方案是删除
@override
注释


那么,除了重写它们之外,还有什么其他方法可以访问正确的值呢

这不是在对象类中声明的通常的
toString
方法,是吗

@Override
public String toString(String line)
对象上的一个不接受任何参数

@Override
public String toString() { ... }
line
来自哪里

如果将
存储在(
Detective
?)类本身中,则可以使用正确的
字符串
签名


希望这对您有所帮助。

如果您使用eclipse,可以进入“源代码->生成toString”菜单。这样就得到了一个void方法,它打印所有的数据。是的,我将它存储在detective类中。我删除了参数,并将行初始化为null。现在我在java.lang.StringBuilder.append(StringBuilder.java:131)的java.lang.String.valueOf(String.java:2994)的Detective.toString.toString(Detective.java:82)的线程“main”java.lang.NullPointerException中得到了这些错误
异常
@sd2000e不确定第82行是什么,但
line
是否碰巧设置为
null
?使用调试器并逐步完成您的
任务
code我的道歉。我在评论中犯了一个错误。我在toString中将行初始化为null。@后面的值是散列码。看见
Object.hashCode()
返回地址这一事实是另一回事。@Jesper我一直认为这是一个内存地址,你是对的,我会更改我的答案。。。(你每天都能学到新东西……)谢谢