validar seleccionado que opciones mostrarlos lista haya enlazar desplegable datos comparar como algo agregar java generics guava immutablelist

java - seleccionado - lista desplegable en jframe



¿Cómo creo una lista de ImmutableLava de guayaba? (3)

Puedo crear una Guava ImmutableList con el método de, y obtendré el tipo genérico correcto basado en los objetos pasados:

Foo foo = new Foo(); ImmutableList.of(foo);

Sin embargo, el método sin parámetros no puede inferir el tipo genérico y crea un ImmutableList<Object> .

¿Cómo puedo crear una ImmutableList vacía para satisfacer la List<Foo> ?


Dado que Java 8, el compilador es mucho más inteligente y puede averiguar los parámetros de parámetros de tipo en más situaciones.

Ejemplo:

void test(List<String> l) { ... } // Type checks in Java 8 but not in Java 7 test(ImmutableList.of());

Explicación

Lo nuevo en Java 8 es que el tipo de destino de una expresión se usará para inferir los parámetros de tipo de sus subexpresiones. Antes de que Java 8 solo argumentos a métodos donde se utiliza para la inferencia de parámetros de tipo. (La mayoría de las veces, una excepción son las asignaciones).

En este caso, el tipo de parámetro de test será el tipo de destino para of() , y el tipo de valor de retorno se elegirá para coincidir con ese tipo de argumento.


Si asigna la lista creada a una variable, no tiene que hacer nada:

ImmutableList<Foo> list = ImmutableList.of();

En otros casos donde no se puede inferir el tipo, debe escribir ImmutableList.<Foo>of() como dice @zigg.


ImmutableList.<Foo>of() creará una ImmutableList vacía con el tipo genérico Foo . Aunque el compilador puede inferir el tipo genérico en algunas circunstancias, como la asignación a una variable, deberá usar este formato (como lo hice yo) cuando proporcione el valor para un argumento de función.