1. 소개
실제 프로젝트에서는 Null 검증이 필요한 곳이 많을 것입니다.
먼저 실제 프로젝트에서 몇 가지 null 판단 방법을 살펴보겠습니다
if (ObjectUtil.isNotNull(vo.getSubmitterId())) { userIds.add(vo.getSubmitterId()); } if (StringUtils.isNotBlank(vo.getBudgetPM())) { userIds.add(Long.valueOf(vo.getBudgetPM())); } if (CollUtil.isNotEmpty(vo.getOriginatorList())) { userIds.addAl1(vo.getOriginatorList().stream(); }
보통 우리는 객체가 Null인지 판단하는데, java.util에서는 Objects.nonNull(obj)을 사용하고, hutool에서는 ObjectUtil을 사용하거나 직접 null을 사용할 수 있습니다. ! = obj
2. List의 비어 있음 판단
List와 같은 특수 항목은 프로젝트에서 비어 있지 않은 것으로만 판단할 수는 없습니다. List의 경우 null이 아니고 List.size()는 0이 아닙니다. 둘은 서로 다른 것입니다. 회사의 인턴들은 이 둘을 혼동하는 경우가 많습니다. 사이트에 속한 힙 메모리 조각이 있으며 크기가 0이면 아무것도 입력되지 않았음을 의미합니다. 예를 들어 null과 같지 않으면 이제 병이 있다는 의미입니다. . 크기가 0보다 크면 병에 물을 채웠다는 의미입니다.
실제 프로젝트에서는 list.isEmpty()를 직접 판단하는 데 사용되는 것도 발견되었습니다. 소스 코드를 살펴보겠습니다.
public boolean isEmpty() { return size == 0; }
병에 물이 있는지 판단하는 것과 동일합니다. 병이 이미 존재하며, 병이 존재하지 않으면 NullPointerException 예외가 발생합니다.
그래서 일반적으로 list != null && list.size > 0을 사용하여 판단하거나 HuTool의 CollUtil 도구의 isEmpty를 직접 사용합니다. Set, Map 등도 있습니다.
3. 문자열 null 판단
여기서는 여전히 병과 물의 개념을 사용합니다. String이 null인 경우 equals(String) 또는 length()를 호출하면 java가 발생합니다. lang.NullPointerException.
문자열의 null 값을 확인하는 방법에는 여러 가지가 있습니다.
1. 대부분의 사람들이 사용하는 방법 중 하나이며 직관적이고 편리하지만 비효율적입니다.
if(a == null | | a.equals(""));
if(a == null || a.equals(""));
2、比较字符串长度,高效:
if(a == null || a.length() == 0);
3、Java SE 6.0 才刚刚开始提供,效率和方法二差不多:
if(a == null || a.isEmpty());
if(a == null || a.length() == 0);
3. Java SE 6.0이 이제 막 제공되기 시작했으며 효율성은 두 번째 방법과 거의 동일합니다.
if(a == null || a.isEmpty());
물론 org .apache.commons.lang.StringUtils 도구를 사용할 수도 있습니다.
StringUtils.isNotBlank(a);
* StringUtils.isNotBlank(null) = false* StringUtils.isNotBlank("") = false* StringUtils.isNotBlank(" ") = false* StringUtils .isNotBlank("bob") = true
* StringUtils.isNotBlank(" bob ") = true이 도구 클래스에는 isNotEmpty() 메소드도 있습니다. 둘 사이의 차이점은 주석을 보면 명확하게 알 수 있습니다
StringUtils.isNotEmpty(a);
* StringUtils.isNotEmpty(null) = false* StringUtils.isNotEmpty("") = false* StringUtils.isNotEmpty(" ") = true* StringUtils. isNotEmpty( "bob") = true- * StringUtils.isNotEmpty(" bob ") = true4. Optional
- Optional은 NullpointException을 방지하는 것으로 나타납니다. 일반적인 메서드는 다음과 같습니다.
- .empty(): 빈 Optional 인스턴스 만들기
- .of(T t): Optional 인스턴스를 만들고 null
- .ofNullable(T t)에 대한 예외 발생: t가 null이 아니면 Optional 인스턴스를 생성하고, 그렇지 않으면 빈 인스턴스를 생성합니다.
- isPresent(): 컨테이너에 값이 있는지 확인합니다.
- ifPresent(Consumelamda): 컨테이너가 비어 있지 않으면, 괄호 안의 Lambda 실행 Expression
- orElse(T t): 컨테이너의 요소를 가져옵니다. 컨테이너가 비어 있으면 괄호
- orElseGet(Supplier s)의 기본값을 반환합니다. 객체에 값이 포함되어 있으면 해당 값을 반환하고, 그렇지 않으면 s
- orElseThrow()에서 얻은 값을 반환합니다. 비어 있으면 정의된 예외를 발생시킵니다. 비어 있지 않으면 현재 객체
- map( 함수 f): 값이 있으면 처리하고 처리된 Optional을 반환하고, 그렇지 않으면 Optional.empty()
boolean blind = false; if (null != baseInfo.getBlind()){ blind = baseInfo.getBlind(); }Optional을 사용하면 한 줄로 할 수 있어 매우 우아합니다.
boolean blind = Optional.ofNullable(baseInfo.getBlind()).orElse( other: false);4.1 Optional 객체 생성🎜
public final class Optional<T> { private static final Optional<?> EMPTY = new Optional<>(); private final T value; //可以看到两个构造方格都是private 私有的 //说明 没办法在外面new出来Optional对象 private Optional() { this.value = null; } private Optional(T value) { this.value = Objects.requireNonNull(value); } //这个静态方法大致 是创建出一个包装值为空的一个对象因为没有任何参数赋值 public static<T> Optional<T> empty() { @SuppressWarnings("unchecked") Optional<T> t = (Optional<T>) EMPTY; return t; } //这个静态方法大致 是创建出一个包装值非空的一个对象 因为做了赋值 public static <T> Optional<T> of(T value) { return new Optional<>(value); } //这个静态方法大致是 如果参数value为空,则创建空对象,如果不为空,则创建有参对象 public static <T> Optional<T> ofNullable(T value) { return value == null ? empty() : of(value); } }🎜4.2 사용 시나리오🎜🎜시나리오 1: 서비스 계층에서 객체를 쿼리하고 반환한 후 비어 있는지 확인하여 처리🎜
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Optional.ofNullable(task).orElseThrow(() -> new ProcessException(ErrorCodeEnum,SYSIEM ERROR));🎜시나리오 2: Optional 및 Functional 사용 프로그래밍, 한 줄 완료 🎜
Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); Map<String,String> map = new HashMap<>( initialCapacity: 8); Optional.ofNullable(task).ifPresent(d -> map.put("taskId",d.getTaskDefinitionKey()));
위 내용은 Java에서 빈 판단을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
