실험하는 동안이 줄을 시도했습니다.
String test = Optional.empty().orElse("test");
-놀랍게도 유형 오류가 발생했습니다. incompatible types: Object cannot be converted to String.
왜 그런 겁니까? 소스를 살펴보면 orElse
선택 사항이 비어있는 경우 전달되는 내용을 반환해야합니다. 그래서 나는 무엇을 놓치고 있습니까? 반면에 이것은 잘 작동합니다.
String test = Optional.of("me").orElse("test");
글쎄, 이것은 제네릭과 관련된 문제입니다. empty()
정적 메서드 를 보면 일반적인 메서드이며 유형 변수가 있습니다. 그냥 호출 Optional.empty
하면 유형 변수 T가 사용되며 Object
호환되지 않는 유형이 있습니다. 옵션 형입니다 Optional<Object>
, 그리고 그것은 분배 것 Object
아닌가 String
. 문제를 해결하려면 형식 매개 변수를 명시 적으로 전달하여 컴파일러를 도와야합니다. 여기 수정이 있습니다.
String test = Optional.<String> empty().orElse("test");
그러나 대상 유형이 Object
이면 아래와 같이 String
의 일부 하위 유형 이므로 작동 Object
합니다.
Object test = Optional.empty().orElse("test");
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다