2014-10-06 4 views
13

Kennt jemand eine bessere Möglichkeit, die folgende Anweisung zu schreiben:Wie bekomme ich die Klasse zu einem Array-Typ?

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

ich den Array-Typen benötigen, aber ich weiß nicht, ob es eine bessere Lösung ist. Im Moment funktioniert dieses Beispiel für mich, aber vielleicht kennt jemand einen besseren Weg, dasselbe ohne das Schlüsselwort new zu tun.

+1

Warum nicht 'MySpecialClass.class'? Wenn 'mySpecialMethod()' eine 'Class' als Parameter verwendet, macht es keinen Sinn, ein Array zu instanziieren. –

+0

Die Methode erwartet 'Klasse c 'als param – user3280180

+0

Ich sehe, mein schlechtes. –

Antwort

17

Die Klasse von new MySpecialClass[0] ist MySpecialClass[].class so können Sie verwenden:

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

Nur aus Neugier, was wäre die beste Lösung, wenn Ihr Komponententyp zum Zeitpunkt der Kompilierung nicht bekannt war? Ich kann mir keinen besseren Weg vorstellen als 'java.lang.reflect.Array.newInstance (componentClass, 0) .getClass()' – biziclop

+0

@biziclop Mein Code entspricht dem Original. Wenn Sie jedoch die tatsächliche Klasse eines Objekts benötigen, benötigen Sie einen Verweis auf dieses Objekt. – assylias

+0

Ich weiß, es kam mir nur als eine vollständige beiseite. Bei einem Klassenobjekt eines Arrays können Sie einfach 'getComponentType()' aufrufen, um die Komponentenklasse zu erhalten. Aber das Gegenteil scheint viel komplizierter zu sein. – biziclop

Verwandte Themen