Domande di rito, avendo “mezzo secolo” ;-)
- perche' lo fai?
- perche' hai scelto Java?
.
Questo perche' ci sono linguaggi di programmazione alternativi, ALTRETTANTO espressivi, MA PIU' SEMPLICI da usare.
Ovvio, niente e' “a gratis”, ci sono pro e contro, MA POICHE' ci sono pro e contro in TUTTI i casi, conviene scegliere il caso in cui i pro sono di piu' ;-)
---
Java: l'uso di un IDE e' cosa buona e giusta MA conviene PRIMA avere PERFETTAMENTE CHIARO come le cose si scrivono in Java.
Dalla domanda che fai e' evidente che non ti sono chiari FONDAMENTALI concetti sulla struttura dei package e delle directory.
– Package --
Il discorso e' abbastanza complicato. La versione SEMPLICE e' questa
- DEVE ESISTERE una directory RADICE (in genere si chiama ‘src’ o ‘source’) DENTRO LA QUALE TUTTI i sorgenti Java DEVONO STARE
- ESISTE UNA RELAZIONE 1:1 TRA il package JAVA e IL PATH RELATIVO (rispetto alla radice) in cui il file si trova il sorgente Java.
- ESISTE UNA RELAZIONE 1: TRA il nome della classe ED IL NOME DEL sorgente Java
.
Il nome del sorgente Java DEVE ESSERE ESATTAMENTE UGUALE AL NOME DELLA CLASSE
Il nome del package DEVE ESSERE ESATTAMENTE UGUALE AL PATH RELATIVO rispetto la ROOT.
Piu' precisamente, SE il file “MiaClasse.java” (CONTENENTE la classe “MiaClasse”) si trova nella directory con path RELATIVO rispetto alla ROOT
dove/sta/la/mia/classe
il package DEVE ESSERE
dove.sta.la.mia.classe
cioe' DEVE ESSERE POSSIBLE passare da package a path relativo SEMPLICEMENTE CAMBIANDO ‘.’ con ‘/’
Queste regole NON SONO OPZIONALI, MA SONO OBBLIGATORIE.
– Importazione --
Anche qui' le regole sono abbastanza ‘complicate’:
- le classi IN ALTRI PACKAGE vanno SEMPRE IMPORTATE usando il NOME COMPLETO, cioe' il nome del package PIU' il nome della classe. Ci sono casi speciali ma per ora lasciamo perdere
- NON SI IMPORTANO le classi presenti NELLO STESSO PACKAGE (cioe' nella stessa directory) in cui si trova la classe corrente. C'e' una specie di “importazione automatica”. Anche qui ci sono casi speciali ma lasciamo perdere
Quindi se sei nel package
io.sono.qui (che corrispode al path relativo “io/sono/qui”)
e vuoi importare la classe “MiaClasse' che si trova nella directory ”dove/sta/la/mia/classe" dovrai scrivere
import dove.sta.la.mia.classe.MiaClasse;
---
Ci sono una serie di “”macelli"" quando la classe si trova ESATTAMENTE nella directory ROOT.
Diciamo, per tagliare la testa al toro (e per fortuna tagliano quello e non qualcosa altro ;-)), che
NON CONVIENE MAI AVERE classi nella ROOT.
.
Sembra che semplifichi la vita, MA lo fa SOLO nei primi 5 minuti!
All'istante 5 minuti ed 1 millisecondo, diventa un “macello”.
---
Nel caso in questione, dovresiti avere
import B.B
poiche' la classe B SI DEVE TROVARE NELLA directory B
mentre la classe A SI DEVE TROVARE NELLA DIRECTORY A
---
Comunque sono TUTTE COSE che trovi su QUALUNQUE TESTO su Java.
Sono concetti FONDAMENTALI descritti NEI PRIMI CAPITOLI.
Come noti dalla lunghezza della risposta, NON E' UNA COSA BANALE.
Ti conviene STUDIARE BENE usando LIBRI e non andando a tentoni o usando Internet.
Al limite prova con ChatGPT ;-)