Newsgroup: it.comp.java
Titolo: che vuol dire int.class ???

Salve a tutti,
ho visto da qualche parte  mettere un ".class" dietro a un tipo numeroco di 
base, come int o double: che cosa significa esattamente, e quando si 
utilizza???
grazie, riccardo


Cancellalo subito, potrebbe trattarsi del noto virus ".class".
La sua pericolosita' sta proprio nel fatto che si mimetizza da tipo numerico

 ha scritto nel messaggio
news:3A9D2298...@libero.it...


 e vadrai che andra' maeglio.
Io consiglierei piuttosto la disinfestazione del PC con il lanciafiamme.
E' infatti risaputo che il semplice cacciavite nell'hard-disk nulla puo' contro
i virus
intelligenti, ovvero che accorgendosi del tentativo di disinfestazione dell'
hard-disk,
si rifugiano in altri componenti (es il mouse, la tastiera, il monitor ecc).
Se cio' non bastasse, non ti resta che chiamare l'esorcista.


Non mi sembra spiritoso. Perchè invece non provi a rispondere alla
domanda, che fra l'altro è meno banale di quello che sembra?
         ______
        /_____/\             Ugo Landini
       /____ \\ \            Education Technical Supervisor
      /_____\ \\ /           Sun Educational Services
     /_____/ \/ / /          
    /_____/ /   \//\         SUN Microsystems Italia S.p.A.
    \_____\//\   / /         Via Romagnosi, 4
     \_____/ / /\ /          00196 - Rome (RM) - Italy
      \_____/ \\ \           @mail : 
ugo.l...@sun.com
       \_____\ \\            Phone : +39 (0)  6 xxxx.xxx
        \_____\/             GSM   : +39 (0)  335 7766651


public class Foo {
 public static void main(String[] args) {
  Class someClass;
  Object someArray;
  Object wrapper;
  Class wrapperClass;
  someClass = int.class;
  someArray = Array.newInstance(someClass,1);
  wrapper  = Array.get(someArray,0);
  wrapperClass = wrapper.getClass();
 }
}



Ciao,
Gli oggetti di tipo "Class" in java rappresentano i tipi del
linguaggio ovvero tutte le classi stesse più le interfacce, gli array
e i tipi primitivi. 
Quindi benchè i tipi primitivi non siano oggetti, hanno comunque il
loro oggetto di tipo "Class" che li rappresenta, e tale oggetto lo
puoi ottenere nel modo che hai descritto tu: int.class, boolean.class
ecc.
Ovviamente se provi a chiamare il metodo newInstance() su tali oggetti
nel modo seguente
Class c = int.class;
int i = c.newInstance();
ottieni un internal error in quanto gli interi sono tipi primitivi e
non oggetti. 
Il metodo isPrimitive() di c restituirà infatti true.
Da notare infine che puoi ottenere tali classi utilizzando il field
TYPE delle classi wrapper dei tipi primitivi. Ad esempio int.class è
perfettamente equivalente a Integer.TYPE.
Spero di essere stato chiaro
Umberto



Questo codice risponde alla domanda?
Qual'è la differenza fra tipi base e tipi complessi? Se è quella che
un tipo base non è 'un oggetto', xchè possiamo fare int.class? Quando
dovrebbe servire? Il codice sopra a cosa serve?
ciao


Mi scuso, non volevo risultare offensivo.
Ci sono pero' alcune tipologie di post che mi fanno imbestialire:
1) domande buttate li' senza una benche' minima infarinatura su Java ("mio
cuggino mi ha detto che se voglio fare un motore di ricerca devo usare uno script
java", "ho decompilato una classe e la ho modificata senza alcun problema: come
faccio a riottenere un .class?").
2) domande PALESEMENTE da FAQ ("Voglio iniziare con Java. Quali letture mi
consigliate?")
3) domande fatte per pigrizia ... come leggere una riga da un file di testo, come
ottenere l'elenco dei file in una directory, ecc. ... non mi sembra che sia un
problema da NG, o almeno non subito. Cazzo, se guardi le API Java ti accorgerai
che esiste una classe FileReader o FileInputStream, una metodo list() della
classe File ... magari ti puoi accorgere che possono essere le cose di cui hai
bisogno.
E con questo chiudo il discorso!