En el fragmento de Java:
SyndFeedInput fr = new SyndFeedInput();
SyndFeed sf = fr.build(new XmlReader(myInputStream));
List<SyndEntry> entries = sf.getEntries();
la última línea genera la advertencia
"La expresión de tipo Listnecesita una conversión sin marcar para ajustarse a List<SyndEntry>"
¿Cuál es una forma apropiada de arreglar esto?
fuente

Este es un problema común cuando se trata de API anteriores a Java 5. Para automatizar la solución de erickson , puede crear el siguiente método genérico:
Esto te permite hacer:
Debido a que esta solución verifica que los elementos tengan el tipo de elemento correcto por medio de un molde, es seguro y no requiere
SuppressWarnings.fuente
Parece que
SyndFeedno está usando genéricos.Podría tener un yeso inseguro y una supresión de advertencia:
o llame a Collections.checkedList , aunque aún deberá suprimir la advertencia:
fuente
Collections.checkedListevitará la adición de elementos que no sean SyndEntry más adelante. Yo personalmente no usocheckedListmucho, pero tampoco me meto en esta situación de lanzamiento sin control de todos modos ...¿Escribiste el
SyndFeed?¿
sf.getEntriesDevuelve la lista oList<SyndEntry>? Supongo que regresaListy cambiarlo para que regreseList<SyndEntry>solucionará el problema.Si
SyndFeedes parte de una biblioteca, no creo que pueda eliminar la advertencia sin agregar la@SuppressWarning("unchecked")anotación a su método.fuente
SyndFeedproviene de rometools.github.io/rome/ROMEReleases/ROME1.0Release.html . El problema parece solucionarse en versiones más recientes de Roma como las que se encuentran en mvnrepository.com/artifact/com.rometools/rome/1.9.0Si está usando Guava y todo lo que quiere hacer es iterar a través de sus valores:
Si necesita una lista real, puede usar
o
fuente
fuente
Si observas el javadoc para la clase
SyndFeed(supongo que te estás refiriendo a la clasecom.sun.syndication.feed.synd.SyndFeed), el método getEntries () no regresajava.util.List<SyndEntry>, sino que solo devuelvejava.util.List.Entonces necesitas un reparto explícito para esto.
fuente
Si no desea poner @SuppressWarning ("sin marcar") en cada llamada sf.getEntries (), siempre puede hacer un contenedor que devolverá List.
Ver esta otra pregunta
fuente
Aún más fácil
return new ArrayList<?>(getResultOfHibernateCallback(...))fuente