Import Frage

Hallo zusammen
einfache Frage:
wenn ich sage
import java.io.*;

was passiert wirklich? Es werden ja nicht alle Member in den Code kopiert oder?
Also warum sollte ich
import java.io.BufferedInputStream;
sagen
anstelle einfach
import java.io.*;

ausser natürlich guter Programmierstil.

Danke
Herbert

hallo

in manchen packages kommen klassen mit gleichem namen vor, die sich allerdings teils drastisch unterscheiden. wenn du alles in bausch und bogen importierst, kannst du leicht durcheinander kommen.

wenn du eine halbwegs gute ide verwendest, dann kannst du meist die imports mit einem mausklick organisieren - sprich: nur jene klassen importieren, die du tatsächlich brauchst. da gibt es eigentlich keine ausrede mehr für globale imports.

wenn du wissen willst, wo im code überall eine klasse vorkommt, hilft dir ein sauber organisierter import-block weiter: einfach die gefragte klasse raussuchen und markieren. gute ides markieren nun im ganzen code alle vorkommen dieser klasse. bei globalen imports müsstest du erst das erste „normale“ vorkommen der klasse raussuchen.

wir hatten schon mal den fall, dass unnötige imports durchaus auch zur laufzeit probleme gemacht haben. kommt z.b. ein package nur zur kompilierungszeit nicht aber zur laufzeit im klassenpfad vor, kann es unter umständen zu fehlern beim laden der klasse kommen. versteh ich allerdings selber nicht, weil der compiler eigentlich klassenreferenzen vollqualifiziert in den bytecode compilieren sollte. aber seither ist eclipse so eingestellt, dass es vor unbenutzten imports warnt und vor dem speichern wird immer brav strg-shift-o gedrückt.

lg
erwin

super
danke
aber was heisst import jetzt genau, meine letzte Frage:
Wird der Code meiner App hinzugefügt und damit die App grösser?

Danke
Herbert

Nein, der Code von deiner Klasse wird dadurch nicht unbedingt größer. Es wird einfach auf einen Andere klasse verwiesen. Mein Laden deiner Klasse in die JVM werden alle Klassen auf die verwiesen sind auch geladen. Dadurch muss bei einem import java.io*; wesentlich mehr Klassen geladen werden, obwohl die Meisten davon überhaupt nie gebraucht werden.

LG