항목 옵션 반품 시 주의사항
Sep 19, 2024 am 06:19 AMJava 8 이전 접근 방식:
- 예외 발생: 예외적인 상황을 위해 예약되어 있으며 스택 추적 캡처로 인해 비용이 많이 듭니다.
- Null 반환: NullPointerException과 같은 오류가 발생할 수 있는 Null 반환 가능성을 처리하려면 특수 코드가 필요합니다.
Java 8 접근 방식:
- 값을 포함하거나 비어 있을 수 있는 불변 컨테이너인 Optional 클래스를 소개합니다.
- null 사용을 방지하고 예외 발생 없이 누락된 값 처리를 단순화합니다.
- 메소드는 값이 없음을 나타내기 위해 Optional을 반환할 수 있습니다.
옵션 사용의 장점:
- 예외와 null 문제를 방지합니다.
- 클라이언트가 값이 누락된 경우 수행할 작업을 결정할 수 있습니다(기본값 제공, 예외 발생 등).
- 명시적인 null 처리가 필요 없이 코드를 더 쉽게 만듭니다.
Optional 클래스의 유용한 메소드:
- Optional.of(value): null이 아닌 값으로 Optional을 생성합니다.
- Optional.ofNullable(value): Optional을 생성하지만 null 값을 허용합니다.
- orElse(value): Optional이 비어 있으면 기본값을 반환합니다.
- orElseThrow(): 값이 없으면 예외가 발생합니다.
- map(), flatMap(), filter(): Optional 내에서 값을 조작할 수 있습니다.
선택 사항에 컬렉션을 포함하지 마세요:
- 목록이나 배열과 같은 컨테이너 유형의 경우 Optional> 대신 빈 컬렉션을 반환하세요.
성능 고려 사항:
- Optional을 사용하면 객체 할당 측면에서 비용이 발생합니다.
- 기본 유형의 경우 마샬링 비용을 피하기 위해 OptionalInt, OptionalLong 및 OptionalDouble을 사용하세요.
다른 Optional 사용 시 주의:
맵 키나 값 또는 컬렉션으로 사용하지 마세요.
선택적 getter처럼 의미가 없는 한 인스턴스 필드로 사용하지 마세요.
코드 예시
예시 1: Optional
의 기본 사용
import java.util.Optional; public class ExemploOptional { public static Optional<String> encontrarNome(String[] nomes, String nomeBuscado) { for (String nome : nomes) { if (nome.equalsIgnoreCase(nomeBuscado)) { return Optional.of(nome); } } return Optional.empty(); // Retorna Optional vazio se não encontrar o nome } public static void main(String[] args) { String[] nomes = {"João", "Maria", "Ana"}; Optional<String> nomeEncontrado = encontrarNome(nomes, "Maria"); nomeEncontrado.ifPresent(nome -> System.out.println("Nome encontrado: " + nome)); System.out.println(nomeEncontrado.orElse("Nome não encontrado")); } }
로그인 후 복사
예 2: orElseThrow 사용
import java.util.Optional; public class ExemploOrElseThrow { public static Optional<Integer> buscarIdade(String nome) { if (nome.equals("João")) { return Optional.of(30); } return Optional.empty(); // Retorna Optional vazio se o nome não for "João" } public static void main(String[] args) { Optional<Integer> idade = buscarIdade("Maria"); // Lança uma exceção se o valor não estiver presente int valorIdade = idade.orElseThrow(() -> new IllegalArgumentException("Idade não encontrada!")); System.out.println("Idade: " + valorIdade); } }
로그인 후 복사
예 3: 기본 유형의 선택사항
import java.util.OptionalInt; public class ExemploOptionalInt { public static OptionalInt buscarIdade(String nome) { if (nome.equals("João")) { return OptionalInt.of(30); } return OptionalInt.empty(); // Retorna OptionalInt vazio se o nome não for "João" } public static void main(String[] args) { OptionalInt idade = buscarIdade("João"); if (idade.isPresent()) { System.out.println("Idade encontrada: " + idade.getAsInt()); } else { System.out.println("Idade não encontrada"); } } }
로그인 후 복사
위 내용은 항목 옵션 반품 시 주의사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

인기 기사
2 포인트 박물관 : Bungle Wasteland Location Guide
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

인기 기사
2 포인트 박물관 : Bungle Wasteland Location Guide
4 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
스플릿 소설을이기는 데 얼마나 걸립니까?
3 몇 주 전
By DDD
Repo : 팀원을 부활시키는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌
헬로 키티 아일랜드 어드벤처 : 거대한 씨앗을 얻는 방법
3 몇 주 전
By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제
Gmail 이메일의 로그인 입구는 어디에 있나요?
7111
9


자바 튜토리얼
1534
14


라라벨 튜토리얼
1254
25


PHP 튜토리얼
1205
29


Cakephp 튜토리얼
1152
46



Java의 클래스로드 메커니즘은 다른 클래스 로더 및 대표 모델을 포함하여 어떻게 작동합니까?

고급 Java 프로젝트 관리, 구축 자동화 및 종속성 해상도에 Maven 또는 Gradle을 어떻게 사용합니까?

2025 년 상위 4 개의 JavaScript 프레임 워크 : React, Angular, Vue, Svelte

캐싱 및 게으른 하중과 같은 고급 기능을 사용하여 객체 관계 매핑에 JPA (Java Persistence API)를 어떻게 사용하려면 어떻게해야합니까?

카페인 또는 구아바 캐시와 같은 라이브러리를 사용하여 자바 애플리케이션에서 다단계 캐싱을 구현하려면 어떻게해야합니까?
