Código en línea: tipos incompatibles: no se pueden inferir las variables de tipo T

Tengo ese pedazo de código:

 Stream<Supplier<String>> stream = Stream.of(() -> "str");
 stream.map(Supplier::get).findFirst();

Lo que naturalmente quería hacer era:

Stream.of(() -> "str").map(Supplier::get).findFirst();

Pero tengo:

tipos incompatibles: no puede inferir las variables de tipo T

y

referencia de método inválida no se puede hacer referencia al método no estático get () desde un contexto estático

Estoy perplejo, porque pensé que el código en línea no cambia su comportamiento. ¿Cuál es el mecanismo a continuación, que después de la alineación obtuve un error?

EDITAR: Decidí agregar algunos comentarios para enfatizar lo que tenía en mente. Permítanos un código conciso, por ejemplo:

Stream<Integer> stream = Stream.of(1, 2);
stream.of(1, 2).map(i -> i * i).findFirst();

Puedo hacer:

Stream.of(1, 2).map(i -> i * i).findFirst();

Y está bien, entonces ¿por qué el ejemplo anterior (no funciona)?

Respuesta 1

Estoy desarrollando una aplicación de Android con el último SDK. Estoy desarrollando la aplicación para Api 4 (Android 1.6). Mi proyecto tiene un archivo proguard-project.txt (este es el archivo de configuración de proguard para el último ...

Estoy desarrollando un servidor que aloja un repositorio Maven y enfrento el problema de que Maven resuelve incorrectamente las versiones SNAPSHOT si la instantánea no está en un formato específico. Después de buscar las reglas para ...

Estoy creando un complemento de Eclipse. Quiero agregar una columna a la vista de problemas de Eclipse que me permite seleccionar de un menú desplegable de selecciones preestablecidas. ¿Cómo haría para agregar esta funcionalidad? ...

Tengo un proyecto C ++ simple configurado ahora, donde estoy tratando de incluir libxml2. Estoy ejecutando Red Hat 7. He leído varias publicaciones sobre la adición de bibliotecas externas a un proyecto Eclipse C, ...