@NotNull 메모에서 Java 빈 포인터에 대한 제어

자바 팁과 자바 앱에서 NullPonintException을 피하는 가장 좋은 방법
자바 응용 프로그램에서 Null Ponint Exception (빈 바늘 이상) 이 가장 좋은 해결 방법이다.또한 빈 바늘도 튼튼하고 원활하게 작동하는 코드를 쓰는 관건이다.'예방이 치료보다 낫다'는 말도 불쾌한 Null Ponint Exception에도 적용된다.방어적인 인코딩 기술과 여러 부분 간의 약속을 준수함으로써 Null Point Exception을 어느 정도 피할 수 있습니다.아래의 자바 팁들은 최소화할 수 있습니다!null 이런 검사 코드.경험이 풍부한 자바 프로그램원으로서 당신은 이러한 기술의 일부 항목에서 그것을 사용한다는 것을 깨달을 수 있습니다.그러나 대학 1학년 학생과 중급 개발자에게는 좋은 학습 기회다.
이것은 쉽게 배울 수 있는 간단한 기술이지만 코드의 질과 건장성에 있어서 확실히 중요하다.나의 경험으로는 첫 번째 작은 기교만으로도 코드의 질을 개선하는 데 큰 역할을 했다.
1) 이미 String(문자열)에서 알 수 없는 객체가 아닌 equal () 및 equalsingnoreCase () 를 호출합니다.
보통 이미 비어 있지 않은 문자열에서 equals () 를 호출합니다.equal () 방법은 대칭적이기 때문에 a.equal () 호출은 b.equal () 호출과 같다. 이것이 바로 많은 주의 대상 a와 b가 빈 쪽이 호출되면 빈 바늘이 생기는 이유이다.

Object unknownObject = null;

//wrong way - may cause NullPointerException
if(unknownObject.equals("knownObject")){
  System.err.println("This may result in NullPointerException if unknownObject is null");
}
//right way - avoid NullPointerException even if unknownObject is null
if("knownObject".equals(unknownObject)){
  System.err.println("better coding avoided NullPointerException");
}
이것은 가장 중요한 Null Point Exception의 자바 기교를 피하는 것이지만, 결과는 매우 큰 개선이 될 것이다. 왜냐하면 equal () 은 매우 보편적인 방법이기 때문이다.
2) 둘 다 같은 결과를 반환할 때 toString () 대신 valueOf () 를 사용하는 경향이 있음
빈 객체가 toString () 를 호출하면 NullPointException 이 내보내지기 때문입니다.만약 우리가 value () 를 호출해서 같은 값을 얻을 수 있다면, value Of () 를 사용해야 한다.이렇게 하면 빈 값을 전달할 수 있다.특히 Integer, Float, Double 또는 Big Decimla 같은 포장류의 경우.

BigDecimal bd = getPrice();
System.out.println(String.valueOf(bd)); //doesn't throw NPE
System.out.println(bd.toString()); //throws "Exception in thread "main" java.lang.NullPointerException"
만약 당신이 사용한 대상이 비어 있는지 확실하지 않을 때, 이 JAVA 기술을 사용하십시오
3) 빈 보안 방법(null safe method)이나 라이브러리 사용하기
현재 너를null 검사한 소스 구성 요소가 많이 나타나고 있다.그 중 가장 보편적인 것이 아파치의 String Utils이다.StringUtils를 사용할 수 있습니다.isBlank (), isNumberic (), isWhiteSpace () 및 기타 도구는 Null Point Exception 방법을 걱정할 필요가 없습니다.

System.out.println(StringUtils.isEmpty(null));
System.out.println(StringUtils.isBlank(null));
System.out.println(StringUtils.isNumeric(null));
System.out.println(StringUtils.isAllUpperCase(null));

Output:
true
true
false
false
그러나 어떤 결론을 내리기 전에 Null 보안 방법과 클래스에 관한 문서를 읽는 것을 잊지 마세요.이것은 또 다른java 최고의 훈련입니다. 이것은 당신에게 매우 많은 노력을 요구하지는 않겠지만, 당신에게 큰 발전을 가져다 줄 것입니다.
4) 방법에서 Null로 되돌아오는 대신 빈 collection이나 빈 array로 되돌아오는 것을 피한다
이 자바 테크닉도 조슈아 블락의'Effective 자바'에서 언급한 것이다.이 책도 JAVA 인코딩 능력을 향상시키는 원천이다.빈 컬렉션이나 빈 array를 되돌려주면size (), length () 같은 기본적인 호출은 Null Point Exception을 던지지 않습니다.Collection 클래스는 편리한 빈 List, Set 및 Map을 제공합니다.EMPTY_LIST, Collections.EMPTY_SET 및 컬렉션.EMPTY_MAP 이러한 사용할 수 있는 (정적 변수)
코드는 다음과 같다.

 public List getOrders(Customer customer){ 
  List result = Collections.EMPTY_LIST; 
return result; 
} 
유사하게 당신은 컬렉션을 사용할 수 있습니다.EMPTY_LIST, Collections.EMPTY_SET 및 컬렉션.EMPTY_Null로 돌아가는 대신 MAP를 사용합니다.
5) @NotNull 및 @Nullable 주석 사용
약정의 비어 있음 (Nullability) 을 정의할 수 있습니다. @NotNull과 @Nullable와 같은 주석을 사용하여 이 방법이 비어 있는지 알려 주십시오 (null safe).현대의 컴파일러, IDE와 다른 도구는 이 주석을 읽어서 빈 검사를 하거나 빈 검사가 필요한지 알려줄 수 있습니다.IntelliJIDE와 findbugs는 이러한 주석을 지원합니다.이 주석들도 JSR305의 일부분이다.@NotNull과 @Nullable를 보면 프로그램원들이 빈 검사를 할지 여부를 스스로 결정할 수 있습니다.겸사겸사 JAVA 프로그램원에게 이것은 새로운 가장 좋은 실천이다. 비록 적응하는 데 약간의 시간이 필요하지만.
6) 규약과 정의에 따른 합리적인 기본값
자바 분야에서 가장 좋은 빈 바늘을 피하는 방법 중 하나는 약속을 하고 지키는 것이다.대부분의 Null Point Exception 발생 원인은 불완전한 정보를 사용하거나 모든 의존 정보를 제공하지 않아서 대상을 만드는 것입니다.만약 불완전한 대상을 만들고 그 어떠한 요구도 부정하는 것을 허락하지 않는다면, 한동안 후에 발생하는 Null Point Exception을 예방할 수 있습니다.만약 대상이 창설될 수 있다면, 합리적인 기본값을 설정해야 합니다.예를 들어 Employee(고용자) 대상은 Id와Name 속성이 없는 상황에서 만들 수 없지만 선택할 수 있는 pghone number (전화번호) 가 있습니다.만약 Employee가 phone number가 없다면, 빈 값을 되돌리는 대신 0을 되돌려줍니다.그러나 이런 처리는 불법 입력을 검사하는 것이 아니라 빈 값에 대한 검사를 조심스럽게 처리해야 한다.마찬가지로 빈 값을 정의할 수 있거나 빈 값을 정의할 수 없을 때 호출자에게 고지된 결정을 하도록 일깨워야 한다.실패한 후의 선택이나 빈값을 받아들이는 것도 당신이 중시해야 할 중요한 설계입니다.
7) 데이터베이스를 사용하여 도메인 대상을 저장하면 (demain object)
예를 들어:Customer,Orders 등은 데이터베이스에서 빈 값에 대한 제약을 정의해야 한다.데이터베이스는 여러 출처에서 온 데이터를 요구할 수 있기 때문에 데이터베이스에서 빈 값에 대한 검사를 하면 데이터의 완전성을 확보할 수 있다.데이터베이스에 빈 값 제약을 유지하는 것도 JAVA에서 빈 검사를 줄이는 코드를 줄일 수 있습니다.데이터베이스에서 대상을 꺼내면, 그 속성은 비어 있을 수 있고, 그 속성은 비어 있을 수 없으며, 이것은 빈 검사의 코드를 최소화할 수 있다.
8) 빈 객체 모드 사용
이것은 JAVA에서 Null Point Exception을 피하는 또 다른 방법이다.만약 하나의 방법이 하나의 대상을 되돌려준다면, 어떤 호출자가 이 대상을 두루 훑어보거나, 어떤 호출자는 유사한 컬렉션을 사용해야 한다.iterator () 의 방법으로iterator를 되돌려줍니다.만약 호출자가 상술한 방법이 없다면, 빈 대상이 아닌 빈 대상으로 되돌아갈 수도 있습니다.빈 대상은 서로 다른 상하문에서 서로 다른 의미를 가진 특별한 대상이다.이러한 Contrainter나 Conllection 유형을 되돌려주는 방법의 경우, 빈 대상 (Empty object) 은 빈 대상을 되돌려주는 것이 아니라 사용해야 합니다.

좋은 웹페이지 즐겨찾기