소개:
Java 8의 Optional을 사용하는 것이 직관적으로 보일 수 있지만 선택적 또는 null 허용 매개변수를 처리하기 위한 메서드 인수로 이는 일반적으로 차선책으로 간주됩니다. 이 글에서는 이 권장사항이 적용되는 이유를 살펴봅니다.
선택적 인수의 함정:
1. 코드 복잡성:
인수에 옵션을 사용하면 메서드 내에 조건부 논리가 도입됩니다. 각 선택적 인수에는 무효 또는 존재 여부를 확인해야 하므로 분기가 추가되고 코드가 복잡해집니다.
2. 컴파일러 비효율성:
옵션은 null 허용 개체에 대한 래퍼를 나타내므로 불필요한 오버헤드를 생성하고 컴파일 측면에서 null 허용 매개 변수보다 비용이 더 많이 듭니다.
3. Optional Null 허용 여부:
Null 값의 가능성을 명시적으로 나타내는 Null 허용 인수와 달리 Optional 자체는 Null일 수 있습니다. 이러한 불일치로 인해 null Optional이 실수로 전달되면 오류가 발생할 수 있습니다.
4. 중복성:
선택적 반환 유형은 이미 잠재적인 값 부재를 전달합니다. 메서드 인수에 이 정보를 복제하면 중복되며 코드 읽기가 어려워질 수 있습니다.
대체 옵션:
인수에 Optional을 사용하는 대신 다음 대안을 고려하세요.
1. Null 허용 매개변수:
매개변수를 Null 허용으로 선언하고(예: String p1, BigDecimal p2 사용) 메서드 내에서 Null 검사를 명시적으로 수행합니다. Optional을 사용하는 것보다 더 명확하고 효율적입니다.
2. 메서드 오버로딩:
다양한 인수 조합(예:calculateSomething(),calculateSomething(String),calculateSomething(BigDecimal),calculateSomething(String,BigDecimal))에 대해 별도의 메서드 오버로드를 생성합니다. 이는 보다 직관적이고 유연한 인터페이스를 제공합니다.
예:
질문에 제공된 예제 코드를 고려하세요. null 허용 매개변수와 명시적 null 검사를 사용하면 호출 코드가 다음과 같이 단순화됩니다.
String p1 = otherObject.getP1().orElse(null); BigDecimal p2 = otherObject.getP2().orElse(null); int result = myObject.calculateSomething(p1, p2);
결론:
Optional은 반환 값으로 null 허용 값을 처리하는 편리한 방법을 제공합니다. 형식을 메서드 인수로 사용하면 복잡성, 비효율성 및 중복성이 발생합니다. null 허용 매개변수 또는 메서드 오버로드를 수용하면 선택적 입력 매개변수나 null 허용 입력 매개변수를 처리하기 위한 보다 명확하고 효율적이며 유지 관리 가능한 접근 방식이 제공됩니다.
위 내용은 Java에서 메소드 인수로 Optional을 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!