Was ist der Unterschied zwischen import java.util.*; und importieren Sie java.util.stream;?

Ich bin mit Java 8 ist Stream Funktionalität zu manipulieren den Inhalt von einem array in meinem Programm:

Obstacle[] closestObstacles = Stream.generate(() -> new Obstacle()).limit(8).toArray(Obstacle[]::new); //one for each line of attack

Wenn ich versuche zu importieren Stream wie diese: import java.util.*; bekomme ich ein "das symbol Stream kann nicht aufgelöst werden" - Fehler. Wenn ich stattdessen den import Stream wie diese: java.util.stream; Dinge so funktionieren, wie erwartet. Warum geschieht dieses? Ich glaube nicht, verwenden Stream oder etwas namens "Strom" an anderer Stelle in meinem Programm, so dass ich glaube nicht, dass es einen Namenskonflikt?

  • Ich bezweifle, dass der zweite Versuch klappt. Vielleicht haben Sie import java.util.stream.*;? Wenn Sie import mit einer wildcard nur die direkten Klassen in diesem Paket importiert werden, nicht die Klassen in sub-Pakete. Also mit einer import java.util.* importieren Sie alle Klassen und interfaces aufgelistet, hier. Die Klasse Stream tatsächlich befindet sich in der java.util.list.stream - Paket.
  • In der Tat - Import java.util.stream.* importieren, alles in die java.util.stream Paket. Importieren java.util.stream scheitern würden: error: cannot find symbol
  • Sie haben wahrscheinlich einige andere Stream Klasse importiert irgendwo (oder Sie haben eine Stream Klasse im Paket), da sonst die import java.util.*; würde gearbeitet haben, perfekt
  • Mögliche Duplikate von Recursive import Java
InformationsquelleAutor Adam | 2017-12-30
Schreibe einen Kommentar