Jag har ett program som jag börjar med att skriva följande:
import mapp1.*;
Filen som importerar mapp1 ligger i: c:\filer\
och i mappen filer ligger mapp1, mapp1 innehåller sedan ett par mappar till.
Detta ska väl fungera korrekt? :q
5 svar · 218 visningar · startad av Mc Fetto
Jag har ett program som jag börjar med att skriva följande:
import mapp1.*;
Filen som importerar mapp1 ligger i: c:\filer\
och i mappen filer ligger mapp1, mapp1 innehåller sedan ett par mappar till.
Detta ska väl fungera korrekt? :q
Nej, du kan inte importera rekursivt. Med import mapp1.*; importerar du alla klasser i mapp1, men inga klasser i några underpaket (=undermappar) till mapp1.
Det finns inget finurligt sätt att skriva för att enkelt ta alla klasser i alla undermappar utan att behöva importera alla mappar som så här:
import mapp1.*;
import mapp1.mapp2.*;
import mapp1.mapp3.*;
?
Nope. Du kan bara importera ett paket åt gången.
Skumt, om jag vill importera filer som finns i mapp2 så ska det väl då räcka med att jag skriver:
import mapp1.mapp2.mapp3.*;
Sedan kan jag använda de filerna i mapp3? (går inte för mig)
Får felmedelande här:
[kod]TaxClient.java:3: package mapp1.mapp2.mapp3 does not exist
import mapp1.mapp2.mapp3.*;
1. Du importerar ALDRIG en klass. Det du gör är att du i din klass utökar klassens namnrymd (namespace). En klass känner annars alltid bara till sig själv och klasser som finns i samma paket som den själv.
2. Undvik att använda generella importer. Det är ok för t.ex. java.util.* och java.io.* men man bör annars skriva:
import mapp1.Klass1;
import mapp1.Klass2;
import mapp2.Klass3;
Detta för att dels undvika att man får fel när man vill ha just mapp2.Klass3 om det finns en mapp1.Klass3 också och dels för att det är tydligare för den som läser koden och dels för att det blir snabbare för kompilatorer och IDE'er om de slipper söka i alla klasser.
Så det så!!! ;-)