2016-01-25 10 views
6

Ich hatte funktionierende Code mit früheren Version von Java 8, die ich verwendet, um eindeutige Werte von Liste zu bekommen, aber seit ich auf JDK 66 Upgrade es gibt mir ein FehlerProblem mit Java 8 Kollektoren Typ Mismatch: kann nicht konvertieren von Liste <Object> zu Liste <String>

Mismatch Typ: kann nicht von List<Object> zu 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()); 

Wo res umwandeln ist resultset ich bin aus der Datenbank, nicht sicher, was ist falsch, irgendeine Idee?

+0

so die .collect (Collectors.toList()) gibt Ihnen eine Liste aber Sie wollen es Liste lordkain

+0

ja sein, es wurde mit JDK arbeiten 51 aber nach Java seine Wurffehler Upgrade – Nomad

+0

'Liste instListF = instList .stream(). map (e -> (String) e) .collect (Collectors.toList()); ' – Satya

Antwort

3

Nun habe ich vor kurzem ähnliche Art von Fehler Type mismatch: cannot convert from Set<Object> to Set<String> konfrontiert. Unten ist der Code snippet-:

public static void main(String[] args) { 
    String[] arr = new String[]{"i", "came", "i", "saw", "i", "left"}; 

    Set<String> set = Arrays.asList(arr).stream().collect(Collectors.toSet()); 

    System.out.println(set.size() + " distinct words: " + set); 
} 

Hier wird der Screenshot für referenz: enter image description here

mich Nun lassen Sie erklären, warum ich diesen Fehler? In meinem Fall zeigte Code Kompilierzeitfehler an, weil in Compilerversion in Projekteigenschaften nicht übereinstimmte. Ich hatte 1.7 ausgewählt, aber es sollte 1.8 sein, da diese Funktion in 1.8 hinzugefügt wurde.

enter image description here

So notieren Sie sich bitte unter Punkte- machen:

  1. Geeignete JDK in Java Build Path ausgewählt wurde. z.B. JDK 1.8 in diesem Fall.
  2. Geeignete Compiler Version muß unter Java Compiler in Projekteigenschaften (in obiger Screenshot wie angezeigt) ausgewählt werden. z.B. 1.8

Ich hoffe, das würde Ihnen helfen.

4

Ich habe folgendes komplettes Beispiel:

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.stream.Collectors; 
import java.util.List; 
import java.util.ArrayList; 

public class Test { 
    public List<String> test(ResultSet res) throws SQLException { 
     List<String> instList = new ArrayList<String>(); 

     while (res.next()) { 
      instList.add(res.getString("INST").toString()); 
     }   

     List<String> instListF = instList.stream().distinct().collect(Collectors.toList()); 
     return instListF; 
    } 
} 

Es kompiliert perfekt mit javac 8u25, 8u40, 8u60, 8u71 (beachten Sie, dass 8u71 das Sicherheitsupdate von 8u66 ist, also im wesentlichen gleich). Versuchen Sie, Ihr Projekt zu reinigen und von Grund auf neu zu erstellen.

Verwandte Themen