我上课了
public class CallDTO {
private String id;
private Integer callOrigin;
private CustomerDTO callCustomer;
private Integer callType;
private Integer callStatus;
private UserDTO user;
private CustomerDTO callBillingCustomer;
private Date callLogDate;
private Date callRespondDate;
private Date callSolveDate;
private Date callCloseDate;
private String callContactName;
private String callContactTel;
private String callWorkshop;
private String callCustRefNum;
private String callLastComment;
private String checked;
... }
我需要编写一个方法,获取该类的2个对象(来自REST控制器的newCall和来自DB的oldCall)并记录所有更改。
对于UserDTO和CustomerDTO,我需要检查它的ID。
问题是所有字段(id除外)都可以为Null。如果字段的值为null,则更改为null我需要记录一些Empty值: F.E.我有oldCall.getCallLogDate()== null和e \ newCall.getCallLogDate()!= null,所以我需要编写类似于:“调用记录时间已更改!旧值为[空],新值为。 ..“;
以干净的方式编写此方法的最佳方法是什么? Java 8是可以接受的
答案 0 :(得分:0)
JDK 7中引入的java.util.Objects实用程序类有一个可以使用的简洁的null安全equals(Object, Object)方法:
public Class A
{
public static void main(string[] args)
{
String s = “hello”;
String w = Changestring(s);
String x = w; // if you assign s to x, you will just get "hello"
}
private string Changestring(string s)
{
StringBuilder sb = new StringBuilder();
sb.Append(s);
sb.Append(“Hi”);
return sb.ToString(); // "helloHi"
}
}
答案 1 :(得分:0)
首先,这是一个类的可怕的设计。该类应模块化为较小的部分。例如,请注意您的许多字段'名称以call*
为前缀。它应该是一个明确的标志,即这些字段应属于某个包含Call
信息的类。
有许多解决方案可以比较对象的null-safe方式。考虑使用:
Objects.equals
ObjectUtils