2011-04-10 25 views
19

Tengo múltiples clases (B, C y D) que son subclases de clase A. Necesito hacer una lista/matriz que contenga B, C y D y crear objetos basados ​​en cualquier elemento que extraiga de la lista/matrizLista de clases en Java

En AS3 haría algo como esto: var classes: Array = [MovieClip, Sprite, Shape]; o un Vector de Clases.

¿Cómo hago esto en Java? Estoy pensando en algo como esto ahora:

List<Class<? extends A>> list = new ArrayList<Class<? extends A>>(); 

list.add(B); 
+0

Al igual que @ Rob, pero el uso de 'B.class' en lugar de simplemente 'B' – CarlosZ

Respuesta

29
List<Class<? extends A>> classes = new ArrayList<Class<? extends A>>(); 
classes.add(B.class); 
classes.add(C.class); 
classes.add(D.class); 
+0

Ahora entiendo, tuve que use B.class, no B. –

+0

¿Puedo preguntar cómo puedo crear un elemento Object of the List? –

+4

Puede llamar a 'aClass.newInstance()' si la clase tiene un constructor de argumento 0 (llamado estándar); de lo contrario, tendrá que usar uno de los métodos 'getConstructors'. Consulte http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html – CarlosZ

3

Usted puede hacer análogos de ambas cosas. Como CarlosZ pointed out, hay List y sus diversas implementaciones, o puede crear una matriz:

Class[] classes = new Class[] { 
    MovieClip.class, Sprite.class, Shape.class 
}; 
+0

O use 'Arrays. > asList (MovieClip.class, Sprite.class, Shape.class); 'como alternativa – justderb