2012-03-28 3 views
1

Ich habe ein Objekt, c, vom Typ Class (Ich bekomme das Objekt in Laufzeit, so dass ich in der Kompilierzeit nicht sagen kann, welche Klasse es darstellt.)Erhalte Foo []. Klasse gegeben Foo.class

Angenommen c repräsentiert die Klasse Foo. Ich möchte jetzt eine Class -Instanz erhalten, die Foo[] darstellt.

Wie erfolgt dies am besten mit der Standard-Java-API?

+1

Ich glaube, Sie ein einfaches Beispiel für Ihre Absicht zu bieten haben werden, ist es nicht ganz klar von der Frage ... – Nim

+1

http://stackoverflow.com/questions/77387/how-to-instantiate-a-java-array-given-an-array-type-at-runtime –

+0

ja das oben genannte funktioniert - aber wenn Sie das tun müssen - in der Mehrheit von Wenn Sie eine schlecht entworfene Anwendung haben (dh Polymorphie behandelt normalerweise alles, was Sie brauchen) – scibuff

Antwort

3

Laut, eine der Möglichkeiten ist: auf jeden Fall

Class arrayClass = java.lang.reflect.Array.newInstance(c, 0).getClass(); 

Das ist wie ein Betrüger sieht, aber es ist sauberer als mit der Klasse Namen zu spielen.

1

Hier ist ein Beispiel dafür, wie dies zu tun:

import java.lang.reflect.Array; 
public class ReflectTest { 
    public static void main(String[] args) { 
     Foo c = new ReflectTest().new Foo(); 
     Foo[] foos = (Foo[]) Array.newInstance(c.getClass(), 5); 
    } 
    class Foo { 
    } 
} 
+0

'c' ist vom Typ' Class' in meiner Frage ... aber ich sehe, was Sie anstreben. – aioobe

Verwandte Themen