Java中如何显示List集合存储的自定义对象指定元素的标题属性
问题解答
问题根源
你直接打印Book类对象时,默认调用的是父类Object的toString()方法,该方法默认返回类全限定名@十六进制哈希值,就是你控制台看到的tp.books.Book@xxxx格式的输出。
额外提醒:你当前代码里get(0)取的是列表第1个元素,对应第1部《Harry Potter à l'Ecole des Sorciers》,你给出的期望输出第一个值是第2部的书名,如果确实需要输出第1、7部,注意核对你的需求和期望输出是否匹配。
解决方案1:直接调用书名属性的getter方法输出
首先给你的Book类添加书名字段的getter方法(假设你Book类里存储书名的属性名为title):
public class Book { // 你原有类的属性、构造方法 private String title; // 添加getter方法 public String getTitle() { return this.title; } }
然后修改printOnlyTome1AndTome7方法里的打印语句:
public void printOnlyTome1AndTome7() { System.out.println("----- Titre des tomes -----"); // 取第1部书名用get(0).getTitle(),要第2部的话改get(1) System.out.println(books.get(0).getTitle()); System.out.println(books.get(6).getTitle()); }
解决方案2:重写Book类的toString()方法
如果你希望直接打印Book对象就默认输出书名,可以在Book类中重写toString方法:
public class Book { // 你原有类的属性、构造方法、其他方法 @Override public String toString() { // 返回你想打印的内容,这里直接返回书名 return this.title; } }
修改后你原有打印books.get(0)的代码不需要改动,运行就会直接输出书名。
内容的提问来源于stack exchange,提问作者Aaricia-Lila
相关产品推荐
相关产品推荐

