【发布时间】:2016-12-02 10:38:33
【问题描述】:
我已经定义了这个方法:
@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 in terminal。
我知道这是正在输出的哈希码。 但是,我需要它来打印我在 toString() 方法中定义的 str 。
问题是Detective类型的toString(String)方法必须重写或实现超类型方法,我唯一的解决办法是去掉@Override注解。
那么除了覆盖它们之外,还有什么其他方法可以访问正确的值呢?
【问题讨论】:
-
如果你使用eclipse你可以去菜单source->generate toString。这样你就会得到一个 void 方法,它会打印所有数据
标签: java overriding tostring hashcode