NPE 의 출현 을 피하 다
2702 단어 자바
NPE , , 。
NPE 가 뭐야?
NPE:Null Pointer Exception 우선,null 은 하나의 키워드 로 static 과 Public 와 마찬가지 로 대소 문자 가 민감 합 니 다.그 다음 에 모든 기본 형식 은 기본 값 이 있 습 니 다.예 를 들 어 int 의 기본 값 은 0 이 고 Boolean 의 기본 값 은 false 이 며 null 은 모든 참조 형식의 기본 값 입 니 다.
null 은 모든 인용 형식 에 값 을 부여 할 수도 있 고 모든 인용 형식 으로 바 뀔 수도 있 습 니 다.
NPE 어떻게 해결 하나 요?
여기에 외국 사내 들 이 쓴 내용 을 붙 여 라.자바 에서 빈 지침 이 이상 하 게 되 는 흔 한 원인 이다.일반적으로 두 가지 값 판단,호출 방법 과 가방 을 뜯 을 때 발생 한다.
equals 방법
equals 방법 을 사용 할 때,이미 알 고 있 는 유형의 대상 을 사용 하여 equals 방법 을 알 수 없 는 유형의 대상 과 비교 해 야 합 니 다.이 두 대상 을 뒤 집 으 면 빈 포인터 이상 이 생 긴 다.
toString()과 valueOf()방법
우 리 는 Object 유형 을 말 해 야 하 는 대상 을 String 유형 으로 바 꾸 는 것 을 만 날 수 있 습 니 다.이때 우 리 는 보통 세 가지 해결 방법 이 있 습 니 다.하 나 는 강제 변환 입 니 다.(String)Object 입 니 다.이런 방식 은 가장 흔히 볼 수 있 는 변환 형식 입 니 다.그러나 주의해 야 할 것 은 이 대상 이 String 형식 으로 전환 되 어야 한 다 는 것 입 니 다.그렇지 않 으 면 이상 을 보고 할 수 있 습 니 다.하 나 는 Object 를 이용 한 toString()방법 이지 만 이 대상 이 null 일 때 빈 포인터 이상 을 알 립 니 다.마지막 으로 value Of()방법 입 니 다.이 방법 은 빈 포인터 이상 을 표시 하지 않 습 니 다.이 대상 이 null 일 때 null 값 의 문자열 을 되 돌려 줍 니 다.즉,"null"입 니 다.다음은 value Of 방법의 소스 코드 입 니 다.
/**
* Returns the string representation of the {@code Object} argument.
*
* @param obj an {@code Object}.
* @return if the argument is {@code null}, then a string equal to
* {@code "null"}; otherwise, the value of
* {@code obj.toString()} is returned.
* @see java.lang.Object#toString()
*/
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
그러나 사용 할 때 는 null 이 아 닌'null'문자열 을 되 돌려 주지 않도록 주의해 야 합 니 다.
사용 도구 클래스
사실은 많은 도구 류 가 null 인지 아 닌 지 를 판단 하 는 작업 을 해 주 었 습 니 다.예 를 들 어 apache 의 StringUtils 류 중의 isEmpty(),isNotEmpty(),isBlank()등 은 코드 를 쓸 때 이런 방법 을 많이 사용 하여 문제 가 발생 하지 않도록 할 수 있 습 니 다.
빈 집합 으로 돌아 가기
우리 가 얻 은 데이터 가 null 일 때,우 리 는 그것 을 빈 집합 으로 바 꿀 수 있다.예 를 들 어:
List list = Collections.EMPTY_LIST;
이런 방식 으로 되 돌아 오 는 데 이 터 는 여전히 size()등 을 호출 할 수 있 으 며 오류 가 발생 하지 않 습 니 다.
@NotNull 과@Nullable 사용 하기
이 두 주해 의 사용 에 대해 서 는 아직 밝 혀 지지 않 았 습 니 다.@NotNull 을 사용 하여 전 송 된 값 이 null 인지 아 닌 지 를 판단 할 수 있 습 니 다.비어 있 으 면 오 류 를 보고 할 수 있 습 니 다.사용 방법 은 다음 과 같 습 니 다.
@NotNull(message = " !")
private String personName;
주 해 를 매개 변수 에 추가 할 수도 있 습 니 다.
일정한 규칙 에 따라 디자인 류
우 리 는 get 방법 을 호출 할 때 이 대상 에 게 기본 값 을 설정 할 수 있 습 니 다.이러한 방식 을 통 해 빈 포인터 이상 문제 가 발생 하 는 것 을 피 할 수 있 습 니 다.
데이터베이스 비 어 있 는 제약 조건
데이터베이스 에 있 는 필드 에 비 어 있 는 제약 을 추가 하면 기록 을 조회 할 때 잘못 보고 하지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.