Un problema con el uso de guayaba tipo Optional
como argumentos de los métodos es que no se puede simplemente escribirOptional.absent() Los valores a los métodos concisa
// method declaration
public void foo(Optional<String> arg);
// compiler error
foo(Optional.absent());
debido a la inferencia de tipos en su defecto, sino que hay que añadir el escriba explícitamente:
// real method call
foo(Optional.<String> absent());
¿Cómo puedo evitarlo?
No hay realmente una mejor manera, pero para su información, 'Opcional' tiende a ser más comúnmente usado como un valor de retorno que como un tipo de argumento de método. (Es mucho más fácil olvidar que un valor de retorno de un método puede ser nulo que un argumento para el método que está escribiendo). –
Con una expresión complicada, utilizo una variable local de un tipo apropiado (en el RHS de la tarea) no se necesita ninguna variable de tipo) para obtener algo más legible. Pero aquí no se puede hacer nada hasta que llegue la resolución (probablemente JDK8). – maaartinus
@LouisWasserman Todavía hay ventajas de usar 'Optional' como argumento: 1) dejar en claro a los usuarios de API que un argumento puede estar ausente; 2) haciendo que sea fácil pasar el valor de devolución de otro método al suyo. –