2015-08-13 15 views
6

Guardando il codice sorgente della classe Integer, proprio inciampiamo in questo sotto la lineaCreazione di un'istanza per Class?

Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int"); 

E getPrimitiveClass è un metodo nativo.

static native Class getPrimitiveClass(String name); 

perché è diventato un metodo nativo? voglio davvero saperlo.

Come si può creare un'istanza per Class ?? Questo differisce dal normale modo di creare istanza per es .: Ex e = new Ex()?

+1

Non si sta creando un'istanza per quanto posso dire. Stai solo ottenendo un oggetto 'Class'. – biziclop

+3

Sembra che questo sia un argomento alla moda oggi, vedi [qui] (http://stackoverflow.com/questions/31983101/why-does-classinteger-c-int-class-compile). – Mena

+0

@biziclop Sono in un presupposto che 'ottenendo un oggetto di classe = istanza'? –

risposta

2

Il commento di sopra della definizione del metodo dice:

/* 
* Return the Virtual Machine's Class object for the named 
* primitive type. 
*/ 
static native Class getPrimitiveClass(String name); 

Dal momento che la (almeno, di Sun) Virtual Machine è implementato in C, quindi presumo che questo è il motivo per il metodo essendo native.

+0

esattamente il motivo. –