Newsgroup: it.comp.java
Titolo: - NOMEFILE OBLIGATO

 Public class prova must be defined in a file called "prova.java".
Una classe pubblica deve farlo, una non pubblica può invece esimersi, ma
non è una buona pratica. E' anche possibile inserire più classi in unico
file, ed anche questa non è una pratica corretta dal punto di vista del
design. E' molto comodo avere per ogni file una classe, si può guardare
la struttura delle directory (i package vengono mappati in directory) ed
avere già una visione d'insieme. Perchè questo sia obbligatorio dovrebbe
dipendere dalle specifiche JavaBeans, che lo richiedono, facilitando
questo il caricamento dinamico e l'introspection delle classi stesse.
Infatti esiste un metodo che ti permette di caricare una classe sulla
base del suo nome, e questo metodo non deve fare altro che cercare il
file esatto nel path dato dai package. Anche il classloader dovrebbe
funzionare così (per fare la stessa cosa, cioè caricare le classi, ma a
livello  "interno" e non direttamente controllato da te come nel
meccanismo dinamico). Se invece una classe non è pubblica non è visibile
all'esterno, dunque può chiamarsi come vuole. Infatti questo ha senso
solo se è una classe che deve essere "vista" solo dalle alter classi
definite nello stesso file (pessima abitudine, 1 classe-1 file dovrebeb
essere la regola), ma è meglio utilizzare altri meccanismi di
"information hiding", come le classi interne o anche una migliore
suddivisione in package. Infatti una classe unica non pubblica in un
file è invece una classe completamente isolata (oltre all'eventuale
main), e non mi viene in mente a cosa potrebbe servire... che non vuol
dire che non serva, però!
Fatemi un esempio di classe non pubblica che abbia un senso e che non si
possa disegnare meglio con qualche altra struttura
P.S. scusa per la risposta sulla tua mail!
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Enterprise Java Consulting
@mail: Ugo.L...@Flashnet.it
Home URL: 
http://www.ugolandini.net
Sample Work: 
http://www.sirena.lomb.cgil.it
Work Phone: 02/26254326
Cell Phone: 0347/6310749 - 0347/4783580
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

qualcuno sa togliermi questo dubbio???
...esaminate questo codice...
public class prova
{
      static public void main(String rff[])
      {
            // istruzioni
      }
}
quando vado a compilarlo mi da questo errore:
Public class prova must be defined in a file called "prova.java".
xchč il file deve x forza chiamassi "prova.java"???
rispondetemi sul newsgroup.
non usate l'email (non č il mio indirizzo)

Scusa la mia crudezza, ma non ce la faccio a resistere : prima di porre
domande cosě idiote perche' non ti compri un libro o ti leggi un po' di
documentazione in rete ?
Studia qualche manuale prima e poi ritorna a porre domande un po piu'
"intelligenti".
Se per te e' troppo, allora lascia stare la programmazione e dedicati a
qualcos'altro.
Ciao.

Attento Luciano, guarda che GEKOTAG e' in agguato. Anche tu sarai il
PUTTANO del newsgroup.
Purtroppo un tempo ti insegnavano che magari se ti leggi un manuale eviti
nell'ordine:
1) di dire delle immani cazzate
2) di fare domande stupide che non e' un male in se, ma da agli altri
l'idea che sei uno che anziche' lavorare si vuole far preparare la minestra
dagli altri e quindi li indisponi
3) di perdere tempo per scrivere il messaggio sul newsgroup e attendere una
risposta, e di far sprecare banda agli altri che devono tirarsi giu' anche
le domande 'stupide', ke risposte seccate, e le incazzature degli altri.
Pero' se fai notare questo GEKOTAG si incazza, e ti bolla di PUTTANA. Visto
che in questo newsgroup c'e' gia' un puttano, cioe' io, vedi di calmarti
perche' questa e' la mia zona e ci batto io. Tu vai a fare il PUTTANO su un
altro gruppo, dove magri la gente si legge la documentazione.
Carlo Emanuele Demontis
PUTTANO del newsgroup it.comp.java, GEKOTAG permettendo


documentazione in rete ?
[snip]
Anche se non condivido la forma, Luciano ha perfettamente ragione. Mi
sembra che ultimamente il NG sia diventato un pò il forum del
principiante, dove chiunque posta domande che potrebbero benissimo
trovare una risposta con una semplice consultazione di qualsiasi
manuale Java. Tra l'altro ci sono anche le FAQ che però sembra che
nessuno legga, vista anche la periodicità con cui vengono riproposte
le stesse questioni ritrite.
Bitboy.

 programmazione e dedicati a qualcos'altro.
Non esageriamo. E' veramente una domanda stupida? Quando a suo tempo
ho tentato di rispondere l'avevo interpretata in questo modo: "So
benissimo che il file sorgente deve chiamarsi come la classe pubblica
contenuta, ma, per curiosita', perche' alla SUN hanno fatto questa
scelta?".
A questa non ho saputo rispondere. Evidentemente, viste le altre
risposte, sono stato troppo contorto.
--
Ciao. Leonardo 
bos...@uno.it
 
http://surf.to/tetractys

non usate l'email (non è il mio indirizzo)
Onestamente spero che questo thread si chiuda presto, visto che i
posting fatti non sono di nessun interesse.
In realtà la domanda potrebbe non essere banale come sembra, esiste un
motivo ben preciso alla scelta della Sun.
La scelta di memorizzare il bytecode di una classe all'interno di un file
dipende
1) dal legame strettissimo che esiste tra Java ed il mondo web.
2) dalla necessita (parlando di OOP) di consentire la portabilità degli
oggetti
Per ovvi motivi, proprio dovuti alla alta portabilità di Java, il nome del
file si deve chiamare come il nome della classe
contenuta all'interno.
Ora, non ci scordiamo che al di fuori di Winzozz di Microsoft, tutte le
piattaforme Unix etc.
si basano su sistemi operativi di tipo "Case Sensitive"
ovvero "Pippo" è diverso da "pippo" che è diverso da "PIPPO".
E' quindi ovvio che se all'interno del codice si fa riferimento alla classe
"pippo", quando la VM andrà a caricare
la classe dal file "pippo.class" si aspetterà di trovare esattamente questa
e non "Pippo.class".
Spero di avere risolto l'rcano definitivamente e di non dover più leggere
thread di questo tipo,
ricordiamoci che non tutti nascono "imparati", ed anche una curiosità di
questo tipo è più che lecita.
Massimiliano Tarquini
tarq...@arcaweb.it