我定义了这个方法:
@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
注释。
那么我可以通过其他方式访问正确的值而不是覆盖它们?
答案 0 :(得分:1)
这不是通常在Object类中声明的toString
方法吗?
@Override
public String toString(String line)
对象上的那个不带任何参数......
@Override
public String toString() { ... }
line
来自哪里?
如果您将line
存储在(Detective
?)类中,那么您可以使用正确的toString
签名。
希望这有帮助。