我需要在控制台中打印带有屏蔽数据的请求正文。因此,我希望将用于打印到控制台的屏蔽的请求对象与用于业务而不屏蔽的请求对象分开。
因此,我将请求对象(underwriterequest request)克隆到新对象(underwriterequest requestmasking),然后使用方法来屏蔽数据。
但是当我将屏蔽身份证设置为 new object 时,引用对象(underwriterequest 请求)也具有屏蔽。
我不想屏蔽(underwriterequest 请求),因为该对象必须在业务逻辑中使用。
为什么会对参考对象产生影响? 如何屏蔽数据而不影响参考对象?
谢谢。
立即学习“Java免费学习笔记(深入)”;
public @ResponseBody ResponseEntity<UnderwriteResponse> execute(@RequestBody UnderwriteRequest request) {
UnderwriteRequest requestMasking = maskingData(request);
}
public static UnderwriteRequest maskingData(UnderwriteRequest request) throws CloneNotSupportedException {
UnderwriteRequest requestMasking = (UnderwriteRequest) request.clone();
try {
if(request != null) {
if(request.getRequestBody().getPersonalData().getIdCard() != null && !request.getRequestBody().getPersonalData().getIdCard().isEmpty()) {
maskIdCard(requestMasking, request);
}
}catch (Exception e) {
log.info(e);
}
return requestMasking;
}
public static void maskIdCard(UnderwriteRequest requestMasking, UnderwriteRequest request) {
String maskChar = "X";
String maskString = StringUtils.repeat( maskChar, 9);
String idcard = request.getRequestBody().getPersonalData().getIdCard();
requestMasking.getRequestBody().getPersonalData().setIdCard(StringUtils.overlay(idcard, maskString, 0, 9));
}
@Getter
@Setter
public class UnderwriteRequest implements Cloneable{
private RequestHeader requestHeader;
private RequestBrmsBody requestBrmsBody;
private RequestBody requestBody;
private RESPONSE_STATUS status = RESPONSE_STATUS.FAILED;
private String message;
@Override
public Object clone() throws CloneNotSupportedException {
// TODO Auto-generated method stub
return super.clone();
}
}我使用clone()方法将对象值复制到新对象。 因为我认为当我更改新对象中的数据时,不会影响引用对象。https://www.geeksforgeeks.org/clone-method-in-java-2/
看来您正在使用SpringBoot框架。你可以看一下 BeanUtils.copyProperties();方法。该方法通过反射为第一个对象和第二个对象分配相同的属性。不会有你提到的问题
以上就是在Java中,如何将对象值复制到新对象并更改数据而不影响另一个引用变量的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号