개발 과정(체인) 코드가 NPE를 처리하는 몇 가지 방식과 우아한 해결 방안.
String mpName=member.getStore().getMarketplace.getName();
xx시장인지 아닌지를 판단하려면 테이블 디자인 초기에 또는 표준에 맞지 않는 데이터를 추가하면 이 줄 코드를 실행할 때 NPE에 보고한다.그러면 우리는 어떻게 유일한 관계에서 코드를 바꾸거나 최적화할 수 있습니까? 즉, 표 데이터를 바꾸지 않는 상황에서 이에 대한 최적화 방식은 어떤 것들이 있습니까?
전통적인null판단
if(member.getStore()==null){
...
if(store.getMarketplace==null){
...
if(marketplace.getName()==null){
...
}
}
}
2. 이상 포획
String mpName="";
try{
mpName=member.getStore().getMarketplace.getName();
}catch(Exception e){
mpName="unknow"
}
3. jdk8의 도구 클래스 Optional
String mpname=Optional.ofNullable(member)
.map(m->m.getStore())
.map(s->s.getMarketplace())
.map(p->p.getName())
.orElse("unknow");
//.ifPresent(m->m.setName("nuknow"));
orElse와 ifPresent의 차이점은 다음과 같습니다.
orElse:null이 있으면 실행
ifPresent: 모두null로 실행
4. 제한된 StringUtils 3자 도구
이 일반 처리 요청 매개 변수는lang3을 사용하는데 개발 과정에서 자주 사용하면 더 이상 말하지 않겠습니다.
개인적으로 공식적으로 내놓은 도구는 과정이 너무 길어서 체인식으로 체인식을 해결하는 것이 비교적 번거롭다. 간단하게 말하자면try로...catch..일반적인 체인 논리 코드를 완성합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Leetcode#24. 두 개의 교환 체인 테이블의 노드사고방식 1: 비귀속, 새로운 노드의 도움을 빌린다 사고방식 2: 귀속...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.