Java三个类场景下如何正确调用另一个类的值显示作者全名
问题根因
你直接将Author类对象用于字符串拼接时,Java会自动调用该对象从Object父类继承的默认toString()方法,该方法的返回值格式就是类名@十六进制哈希值,也就是你看到的Author@2f2c9b19这类异常内容。
解决方案1(推荐):重写Author类的toString()方法
在Author类中添加自定义的toString()实现,返回拼接好的姓名即可,后续所有直接打印Author对象的场景都会自动输出格式化后的姓名,无需重复拼接属性:
// 添加到Author类中即可 @Override public String toString() { return firstName + " " + lastName; }
解决方案2:手动拼接作者属性输出
如果你不想重写toString()方法,也可以修改Book类的printBook方法,主动调用Author类的get方法取值拼接:
public void printBook() { System.out.print("Title: " + title + "\nAuthor: " + author.getFirstName() + " " + author.getLastName() + "\nPrice: " + price); }
该方案要求你的Author类已经实现了getFirstName()、getLastName()两个公共get方法,和你描述的“已经包含对应set和get方法”的前提匹配,可直接使用。
内容的提问来源于stack exchange,提问作者WiloWisk
相关产品推荐
相关产品推荐

