我有一个getter方法,我用nameTransform方法包装getName,以检查我需要的验证
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO.getName());
}
一种检查方法
private String nameTransform(String name) {
if (orderDTO.getName().length() < 1) {
orderDTO.setName("0000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 2) {
orderDTO.setName("000" + orderDTO.getName());
}
if (orderDTO.getName().length() < 3) {
orderDTO.setName("00" + orderDTO.getName());
}
if (orderDTO.getName().length() < 4) {
orderDTO.setName("0" + orderDTO.getName());
}
else orderDTO.getName();
return nameTransform(name);
}
如何在方法nameTransofm中检索orderDTO?当我做
时OrderDTO orderDTO = new OrderDTO();
它给我空指针异常
答案 0 :(得分:0)
当我理解你的意图时,这应该可以解决问题:
private String nameTransform(OrderDTO orderDTO) {
String name = orderDTO.getName();
String newName;
int length = name.length();
if (length < 1) {
newName = "0000" + name;
}
if (length < 2) {
newName = "000" + name;;
}
if (length < 3) {
newName = "00" + name;
}
if (length < 4) {
newName = "0" + name;
} else {
return name;
}
orderDTO.setName(newName);
return nameTransform(orderDTO);
}
但我不确定为什么你需要在最后一行递归
您的orderTransform现在看起来像这样:
public InvoiceRequestDTO orderTransformer(OrderDTO orderDTO) {
return new InvoiceRequestDTO(nameTransform(orderDTO);
}
答案 1 :(得分:0)
当你使用new OrderDto()
时,它没有名称字段,这就是为什么你得到nullpointer。
return new InvoiceRequestDTO(OrderDto.nameFormatted());
class OrderDto {
....
public String nameFormatted(){
// check name
if(this.name == null) {
return "";
}
return String.format("%4s", this.name).replace(' ', '0');
}
}