我试图打印我添加到我的arraylist中的所有元素,但它只打印地址而不是字符串。
有人可以帮助我或给出一些提示吗?我整个下午一直在寻找
答案 0 :(得分:3)
您需要覆盖Autuer的toString方法,以String格式返回其内容
答案 1 :(得分:1)
您也可以使用foreach来执行此操作;)
for(Auteur a: auteurs){
System.out.print(a.getName() + " - " + a.getNumber());
}
答案 2 :(得分:0)
Java中的每个对象都继承
public String toString();
来自java.lang.Object
在Auteur
课程中,您需要编写类似于以下内容的代码:
.... ....
@Override
public String toString() {
return "Name: "+this.name;
}
答案 3 :(得分:0)
尝试在toString()
课程中定义Auter
方法,如下所示:
public String toString() {
return this.getName() + " - " + this.getNumber());
}
您的代码将按您的意愿执行。 System.out.println
调用参数的toString()
方法并将其打印到输出控制台。
答案 4 :(得分:0)
itr.next()
返回Auteur
而不是String
的对象。要打印名称,您需要使用Auteur
键入它,然后如果您有类Auteur
的打印方法,则打印它。
Auteur aut = (Auteur) itr.next();
System.out.println(aut.printMethod());
答案 5 :(得分:0)
您看到的内容称为对象的默认toString。它是它所属类的FQCN(完全限定类名)和对象的hashCode的合并。
从toString的JavaDoc引用:
Object类的toString方法返回一个由。组成的字符串 对象是实例的类的名称,at-sign 字符“@”,以及散列的无符号十六进制表示 对象的代码。换句话说,此方法返回一个相等的字符串 价值:
getClass().getName() + '@' + Integer.toHexString(hashCode())
我们可以覆盖toString
以提供更易读的输出。看看下面两个类,有没有toString
。尝试执行main方法并比较两个print语句的输出。
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);
}
}