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 einerimport java.util.*
importieren Sie alle Klassen und interfaces aufgelistet, hier. Die KlasseStream
tatsächlich befindet sich in derjava.util.list.stream
- Paket. - In der Tat - Import
java.util.stream.*
importieren, alles in diejava.util.stream
Paket. Importierenjava.util.stream
scheitern würden:error: cannot find symbol
- Sie haben wahrscheinlich einige andere
Stream
Klasse importiert irgendwo (oder Sie haben eineStream
Klasse im Paket), da sonst dieimport java.util.*;
würde gearbeitet haben, perfekt - Mögliche Duplikate von Recursive import Java
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bezweifle ich, dass Sie Ihren zweiten Versuch (
import java.util.stream;
) funktioniert. Wie @JonSkeet darauf hingewiesen, es sollte im Ergebnis zu einem Kompilierungsfehler:error: cannot find symbol
. Vielleicht wollten Sieimport java.util.stream.*;
?Zu Ihrer eigentlichen Frage:
Wenn Sie import mit einer wildcard, das ist das Sternchen (
*
) Charakter, nur die direkten Klassen in diesem Paket importiert werden, nicht die Klassen in sub-Pakete. Also mit einerimport java.util.*
importieren Sie die Klassen wieArrayList
,LinkedList
undRandom
. Eine vollständige Liste finden Sie hier. Die KlasseStream
tatsächlich befindet sich in der sub-Paketjava.util.stream
Paket und wird nicht importiert, wenn Sieimport java.util.*;
.Importieren
Stream
können Sie entwederimport java.util.stream.*;
(alle Klassen innerhalb dieses Pakets) oder nurimport java.util.stream.Stream;
(der FQDN der Klasse, die Sie benötigen).