2014-09-24 2 views
0

Я пытаюсь использовать нуль-объекты из гуавы следующего способа:Как использовать опции Guava в неэквивалентном контексте?

private void display(Optional<String> message) { 
    ... 
} 

Метод, в котором я называю дисплей метода (..) выглядит следующим образом:

if(...) { 
    display(Optional.of("hello"); 
} else { 
    display(Optional.absent()); 
} 

Теперь я получаю следующее сообщение об ошибке компилятора:

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

только компиляции обходного пути я нашел использовать

Optional.fromNullable((String) null) 

вместо

Optional.absent() 

Есть ли действительно никаких других возможностей, если я использую OPTIONALS в необщем контексте?

ответ

3

Вы можете сделать это:

display(Optional.<String> absent()); 
+2

Обратите внимание, что Java 8 должен делать соответствующий вывод типа там. –

0

Я думаю, вы пытаетесь передать параметр unvalid методу. Вы должны обернуть его методом. Это решит проблему.

private void display(String message) { 
Optional<String> optionalMessage=Optional.fromNullable(message); 
    ... 
} 
+1

Ни один метод не требуется. Но это помогает, поскольку использование локальной переменной позволяет Java выводить правильный общий тип. – maaartinus

Смежные вопросы