2014-10-06 13 views
13

Qualcuno sa un modo migliore per scrivere la seguente dichiarazione:Come ottenere la classe associata ad un tipo di array?

example.mySpecialMethod(new MySpecialClass[0].getClass()) 

ho bisogno del tipo di matrice, ma non so se c'è una soluzione migliore. Al momento questo esempio funziona per me, ma forse qualcuno conosce un modo migliore per fare lo stesso senza la parola chiave new.

+1

Perché non 'MySpecialClass.class'? Se 'mySpecialMethod()' prende un 'Class' come parametro, allora non ha senso creare un'istanza di un array. –

+0

il metodo si aspetta 'Classe c 'come parametro – user3280180

+0

Vedo, il mio male. –

risposta

17

La classe di new MySpecialClass[0] è MySpecialClass[].class in modo da poter utilizzare:

example.mySpecialMethod(MySpecialClass[].class) 
+0

Solo per curiosità, quale sarebbe la soluzione migliore se il tuo tipo di componente non fosse noto al momento della compilazione? Non riesco a pensare a un modo migliore di 'java.lang.reflect.Array.newInstance (componentClass, 0) .getClass()' – biziclop

+0

@biziclop il mio codice è equivalente all'originale. Ma se hai bisogno della classe reale di qualche oggetto allora hai bisogno di un riferimento a quell'oggetto. – assylias

+0

Lo so, mi è venuto in mente solo da parte. Dato un oggetto di classe di un array, puoi semplicemente chiamare 'getComponentType()' per ottenere la classe del componente. Ma il contrario sembra essere molto più complicato. – biziclop

Problemi correlati