piccoli quiz - java class senza package

12 views
Skip to first unread message

Davide

unread,
Dec 13, 2009, 8:01:28 AM12/13/09
to jug...@googlegroups.com
Ciao,

secondo voi e' possibile avere una classe senza package? Cioe' messa
subito nella cartella src
(e non in una sottodirectory)? Come si importa?

Simone Bordet

unread,
Dec 13, 2009, 1:23:52 PM12/13/09
to jug...@googlegroups.com
Ciao,

On Sun, Dec 13, 2009 at 14:01, Davide <d...@vide.bz> wrote:
> Ciao,
>
> secondo voi e' possibile avere una classe senza package? Cioe' messa
> subito nella cartella src
> (e non in una sottodirectory)?

Si.

> Come si importa?

Non si importa.

Simon
--
http://bordet.blogspot.com
---
Finally, no matter how good the architecture and design are,
to deliver bug-free software with optimal performance and reliability,
the implementation technique must be flawless. Victoria Livschitz

Davide

unread,
Dec 13, 2009, 2:28:31 PM12/13/09
to jug...@googlegroups.com
2009/12/13 Simone Bordet <simone...@gmail.com>:
> Ciao,
>
> On Sun, Dec 13, 2009 at 14:01, Davide <d...@vide.bz> wrote:
>> Ciao,
>>
>> secondo voi e' possibile avere una classe senza package? Cioe' messa
>> subito nella cartella src
>> (e non in una sottodirectory)?
>
> Si.
>
>> Come si importa?
>
> Non si importa.

Ciao Simone,

mhmm ... probabilmente tu usi java da tanto tempo ... prova !

Simone Bordet

unread,
Dec 13, 2009, 2:42:49 PM12/13/09
to jug...@googlegroups.com
Ciao,
Bella domanda, la mia risposta credo sia giusta, ma il perché sia
giusta è una cosa che non conoscevo.

Marco Ronchetti

unread,
Dec 13, 2009, 3:47:25 PM12/13/09
to jug...@googlegroups.com
Forse c'è qualcosa che mi sfugge nella domanda. Certo che è possibile
farla... Anzi, di solito è la cosa che fanno tutti i principianti...
ci vuole poi un pò di tempo a convincerli ad usare i packages :-)

Citando il sun tutorial su java
http://java.sun.com/docs/books/tutorial/java/package/createpkgs.html :

"If you do not use a package statement, your type ends up in an
unnamed package. Generally speaking, an unnamed package is only for
small or temporary applications or when you are just beginning the
development process. Otherwise, classes and interfaces belong in named
packages."

In genere gli IDE ti "forzano" usare packages, ma anche dentro
Netbeans se provi a creare una Java class ti chiederà il nome del
package, se lo lasci bianco ti dirà che non si dovrebbe usare il
default package ma se insisti te lo lascerà fare. Nella vista di
progetto la tua classe figurerà dentro "default package" ma se guardi
la vista dei files, scoprirai che sta proprio in src.

Ciao

marco
> --
>
> You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
> To post to this group, send email to jug...@googlegroups.com.
> To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
>
>
>



--
Marco Ronchetti - Dipartimento di Ingegneria e Scienza dell'Informazione
Universita' degli Studi di Trento - 38123 Povo (TN) Italy
tel: (+39)0461 282033 mob: (+39)335 6006343 fax (+39)0461 282093
http://latemar.science.unitn.it

jhl

unread,
Dec 13, 2009, 4:31:28 PM12/13/09
to JUG Trentino Alto Adige Suedtirol
Credo che ci siano motivi validi per creare classi senza package. Il
primo è spazio. Valido una volta per gli applet, ma ancora valido per
gli Midlet. Stare dentro 16 o 32 KB può essere importante con certi
carriers. Il secondo è comodità. Supponiamo di avere creati una serie
di utilità dentro un jar. Solo uno viene chiamato di default. Ma a
nessuno piace scrivere java --jar utils.jar it.jugtaa.utilities.Copy,
o java --jar utils.jar it.jugtaa.utilities.Paste, ecc. Anche java --
jar utils.jar Copy sembra un tantino lungo per un sysadmin.
Se forse necessario importare uno di questi classi anti carpal tunnel
syndrome, non è affatto impossibile (per quanto mi ricordo) basta un
import Copy;

John

Davide

unread,
Dec 13, 2009, 4:32:14 PM12/13/09
to jug...@googlegroups.com
Oggi cercando di integrare del vecchio codice che usava i default
package ho avuto dei problemi.

Ho cercato un po' ho visto che non ero l'unico. A quanto pare e'
cambiata la possibilita' di importare classi
nel default package dal livello di compatibilita' 1.4 in poi. Non e'
piu' possibile.

Attenzione non e' piu' possibile importare classi del default package
non che non sia
possibile metterle nel default package.

Faccio un esempio per chiarire. date le seguenti classi:

--------------------------
public class A {}
--------------------------
public class B {

public B() {
A a = new A();
}
}
--------------------------
package bz.davide.dp;

import A; <======= non piu' possibile dal livello di
compatibilita' 1.4+

public class C {
public C() {
A a = new A();
}
}
--------------------------

A e B senza package e C nel package bz.davide.dp.

Ebbene l'import A; funziona con versioni "vecchie" di java, mentre con
le nuove non compila piu'
e non c'e' modo di importare A (se non spostandola a sua volta in un package).

A e B si vedono senza problemi anche se sono nel default package
perche' non c'e' bisogno di importare,
sono nello stesso package ;-)

Questa cosa mi aveva un po' sorpreso. Vi risulta?

Marco Ronchetti

unread,
Dec 13, 2009, 4:47:32 PM12/13/09
to jug...@googlegroups.com
Si Davide è come dici tu ma pare che ci sia un trucchetto usando le
reflections - non lo ho verificato, ma guarda qui:

http://stackoverflow.com/questions/283816/how-to-access-java-classes-in-the-default-package

M
Reply all
Reply to author
Forward
0 new messages