2013-06-04 12 views
2

여기에서 트릭을 찾을 수 없습니다.이 요소가 많은 목록을 포함하고 있음을 의미하는 옵션 객체의 목록을 반환하는 함수가 필요합니다. 그들 중 일부는 유효하지 않습니다.Guava의 컬렉션에 Optional.absent() 요소를 추가하십시오.

public Optional<String> getMyObjects() { 
    List<Optional<String>> result = Lists.newArrayListWithCapacity(2); 

    result.add(Optional.of("This value is valid")); 
    result.add(Optional.absent()); // Compiler error 

    return result; 
} 

이 컴파일되지 않습니다 : 는

당신은 그것을 어떻게

The method add(Optional<String>) in the type List<Optional<String>> is not 
applicable for the arguments (Optional<Object>) 

둘 것 ? 내가 성공하지 주조 시도

답변

3

시도 :

result.add(Optional.<String> absent()); 

absent() 방법은 매개 변수화된다.

4

사용

result.add(Optional.<String>absent()) 

은 제네릭 형식을 강제로.

또는, 그것은 추론 컴파일러 수 있도록 모든

Optional<String> o = Optional.absent(); 
result.add(o); 
관련 문제