我正在尝试打印我添加到数组列表中的所有元素,但它只打印地址而不是字符串。
有人可以帮助我或给出一些提示吗?我整个下午都在找
6 回答
您需要覆盖 Autuer 的 toString 方法以 String 格式返回其内容
You can also, use a foreach to do it ;)
for(Auteur a: auteurs){
System.out.print(a.getName() + " - " + a.getNumber());
}
itr.next()
返回Auteur
而不是的对象String
。要打印名称,您需要键入 cast 它,Auteur
如果您有该类的打印方法,则打印它Auteur
。
Auteur aut = (Auteur) itr.next();
System.out.println(aut.printMethod());
Every object in Java inherits
public String toString();
from java.lang.Object
in your Auteur
class you need to write some code similar to the following:
.... ....
@Override
public String toString() {
return "Name: "+this.name;
}
Try defining the toString()
method in your Auter
class as follows:
public String toString() {
return this.getName() + " - " + this.getNumber());
}
and your code will do what you wish. System.out.println
calls the argument's toString()
method and prints that out to the Output console.
您所看到的称为对象的默认toString。它是它所属的类的 FQCN(完全限定的类名)和对象的 hashCode 的合并。
引用 toString 的 JavaDoc:
Object 类的 toString 方法返回一个字符串,该字符串由对象作为实例的类的名称、at 符号字符“@”和对象的哈希码的无符号十六进制表示形式组成。换句话说,此方法返回一个等于以下值的字符串:
getClass().getName() + '@' + Integer.toHexString(hashCode())
我们可以覆盖toString
以提供更易于阅读的输出。看看下面的两个类,有和没有toString
。尝试执行 main 方法并比较两个打印语句的输出。
class Person {
private String name;
@Override
public String toString() {
return "Person [name=" + this.name + "]";
}
}
class Address {
private String town;
}
public class Test {
public static void main(String... args) {
Person person = new Person();
Address address = new Address();
System.out.println("Person is : " + person);
System.out.println("Address is : " + address);
}
}