problème avec java 8 collectionneurs d'incompatibilité de Type: impossible de convertir de la Liste<Object> Liste<String>
j'ai eu du code de travail avec les anciennes version de java 8 qui j'ai été en utilisant pour obtenir les valeurs uniques de la liste, mais depuis que j'ai mis à niveau vers JDK 66 sa me donne une erreur
Incompatibilité de Type: impossible de convertir de List<Object>
à List<String>
List<String> instList = new ArrayList<String>();
while (res.next()) {
instList.add(res.getString("INST").toString());
}
List<String> instListF = instList.stream().distinct().collect(Collectors.toList());
Où res est resultset que je reçois de base de données, pas sûr de ce qui est mauvais-il une idée?
- si l' .recueillir des(Collectionneurs.toList()) vous donne une Liste<Object>, mais vous voulez qu'il soit List<String>
- oui, c'était de travailler avec JDK 51 mais après java mise à niveau de son lancement erreurs
List<String> instListF = instList.stream().map(e->(String) e).collect(Collectors.toList());
- Vous avez encore des erreur de compilation si vous supprimez le
while
boucle complètement? - Tagir Valeev je ne peux pas supprimer les boucles while car j'ai pour récupérer des données de jeu de résultats
- bien sûr, je comprends que la logique de votre programme va changer. On parle d'erreur de compilation. Sera l'erreur de compilation disparaître ou pas? Je ne demande pas de vous engager sur le code modifié de production.
- Non, il ne va pas après la suppression de la boucle while
- Est-ce un
javac
erreur de compilation ou est-ce une erreur de votre IDE? Cela devrait fonctionner. - L'erreur est de l'ide eclipse
- Puis la mise à niveau de votre Eclipse. Les travaux de cette.
- bien que quelque chose est terriblement mal avec JDK u66
- pas de version d'Eclipse signale une erreur sur votre exemple. Êtes-vous à la compilation à l'aide de Maven ou tel? Dans ce cas, l'erreur sera probablement soulevée par javac en effet - qui correspond à votre observation que l'erreur a été introduite par la mise à niveau du JDK qui est en conflit avec Tagir de réponse.
Vous devez vous connecter pour publier un commentaire.
Eh bien, j'ai aussi étaient confrontés au même type d'erreur
Type mismatch: cannot convert from Set<Object> to Set<String>
récemment. Ci-dessous l'extrait de code-:Voici la capture d'écran pour référence:
Maintenant laissez-moi vous expliquer pourquoi j'obtiens cette erreur? Dans mon cas, le code a été l'affichage d'erreur de compilation car il y a incompatibilité dans compilateur version dans les propriétés du projet. J'avais sélectionné 1.7 mais il devrait être 1.8 depuis cette fonctionnalité a été ajoutée dans 1.8.
De sorte s'il vous plaît prendre note des points ci-dessous-:
J'espère que cela peut vous aider.
J'ai vérifié à la suite de l'exemple complet:
Il compile parfaitement avec javac 8u25, 8u40, 8u60, 8u71 (notez que 8u71 est la mise à jour de sécurité de 8u66, donc essentiellement le même). Essayez de nettoyer votre projet et de reconstruire à partir de zéro.