我想知道在记录时是否有一种通用的方法来屏蔽特定的类字段值?我正在使用Lombok记录器。
例如:
@ToString(includeFieldNames = true)
public class Account{
String name = "";
String accountNumber = "";
String code = "";
}
当记录toString()时,我希望能够以泛型的方式掩盖值(我知道我可以覆盖toString方法但是需要特别针对每个类完成) )
答案 0 :(得分:1)
您可以创建一个专用类,其中包含您需要进行模糊处理的对象。
@ToString(callSuper = true)
public class Account {
String name = "";
MaskedString accountNumber = "";
String code = "";
}
@Getter
@RequiredArgsConstructor
class MaskedString {
private String value;
@Override
public String toString() {
new StringBuilder(value)
.replace(0, 5, "XXXXX")
.toString();
}
}
这会将accountNumber = "0123456789"
的值替换为accountNumber = "XXXXX56789"
。
答案 1 :(得分:1)
对于您的用例,您可以exclude the field from the toString
method。
@ToString(exclude="accountNumber")
public class Account {
String name = "";
String accountNumber= "";
String code = "";
}
答案 2 :(得分:0)
Lombok现在支持使用注释从toString方法中排除字段
@ToString
public class Account {
String name = "";
@ToString.Exclude
String accountNumber= "";
String code = "";
}