我实现了一个名为FormatUtils的实用程序类(带有静态方法的final),它将Employee对象中的数据转换为可用的格式(例如,剥离'$'标记字符串并将其解析为双精度,将名称重新格式化为名字和姓氏) 。现在,在我的代码中的某个地方,我需要一个方法,将大量的Employee数据字段格式化为输出为单个字符串(稍后发送到stdout)。将它放在这个实用程序类中是否有意义,当它可能只需要与Employee对象一起使用时,而不是具有通用性?
答案 0 :(得分:2)
我可能会将方法设置为将Employee
格式化为Employee
类本身。如果需要对员工列表进行不同/额外的格式化(例如行和列标题),我可能会将其放在实用程序方法(或类,如果需要重用)中。
答案 1 :(得分:1)
请勿使用Employee#toString()
为人类读者设置格式;仅使用该方法进行调试。否则,您可能无法在类中使用任何内容在调试器中显示其状态。我知道原始包装器和枚举器使用toString()
,但这主要用于将它们与字符串连接一起使用。
“剥离'$'签署字符串并将其解析为双打”是什么意思?您是否将员工的工资存储为字符串?不要那样做。总的来说,货币值应为BigDecimal
或BigInteger
个对象。使用NumberFormat.getCurrencyInstance()
格式化时,您可以输入美元符号。它使数据库也更容易工作。
如果您忙于将名称拆分为名字和姓氏,那么您确实需要Name
类,并且应该为此提供格式化程序。对于JPA工作,您可以创建Name实例变量@Embeddable
。
您可以提供Employee
类格式方法,也可以让您的类实现java.util.Formattable
,可能接受替代格式标记。您甚至可以使用“无法编程”并提供Employee
方法,例如:
public void writeToFormally(final Appendable a) {...}
public void writeToSimply(final Appendable a) {...}