現在我已經為Puppy創建了一個回應
public class PuppyResponse {
private Long puppyId;
private String name;
private Integer age;
private String breed;
private Long vetId;
private String vetName;
public PuppyResponse(Long puppyId, String name, Integer age, String breed) {
this.puppyId = puppyId。
this.name = name;
this.age = age;
this.breed = breed;
}
public static PuppyResponse of(Puppy puppy) {
Optional<Vet> vet = Optional.ofNullable(puppy.getVet() )。
if(vet.isPresent() ) {
return new PuppyResponse(
puppy.getPuppyId(),
puppy.getName(),
puppy.getAge(),
puppy.getBreed()。
vet.get().getVetId(),
vet.get().getName()
);
}else {
return new PuppyResponse(
puppy.getPuppyId(),
puppy.getName(),
puppy.getAge(),
puppy.getBreed()
);
}
}
public static List<PuppyResponse> listOf(List<Puppy> puppies) {
return puppies.stream()
.map(PuppyResponse::of)
.collect(Collectors.toList())。
}
}
狗屬性的獸醫有可能是空的。 我把Puppy設計成根據它是否為空使用不同的建構式,但這似乎不是一個好方法。 當然它作業起來沒有問題,但我想用更好的方式來設計它。我應該如何處理空值?
uj5u.com熱心網友回復:
如果你想在puppy.getVet()為空時,通過使用orElseGet,直接提供新的Veet物件。
Vet vet = Optional. ofNullable(puppy.getVet()).orElseGet(Vet::new)。
如果你想在puppy.getVet()為空時提供默認的Veet物件
Vet vet = Optional.ofNullable(puppy.getVet()).orElseGet(PuppyResponse::getDefaultVet)。
這樣,你就不需要檢查ifPresent并創建相應的回應了
。return new PuppyResponse(
puppy.getPuppyId()。
puppy.getName(),
puppy.getAge(),
puppy.getBreed()。
vet.getVetId()。
vet.getName()
);
提供默認的獸醫物件
private static Vet getDefaultVet(){
Vet v = new Vet() 。
v.setVetId(0)。
v.setName("默認名稱")。
return v。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313396.html
標籤:
