Estoy trabajando en mi primer proyecto real con Java. Estoy empezando a sentirme cómodo con el idioma, aunque tengo más experiencia con los lenguajes dinámicos.Programación de metadatos Java
tengo una clase que se comporta similar a la siguiente:
class Single
{
public void doActionA() {}
public void doActionB() {}
public void doActionC() {}
}
Y luego tengo una clase SingleList
que actúa como una colección de estas clases (en concreto, es para una biblioteca 2D Sprite, y el " las acciones "son todo tipo de transformaciones: rotar, cizallar, escalar, etc.). Quiero ser capaz de hacer lo siguiente:
class SingleList
{
public void doActionA() {
for (Single s : _innerList) {
s.doActionA();
}
}
... etc ...
}
¿Hay alguna manera de adherirse simplemente un método (o una lista conocida de métodos) para cada miembro de la lista de interior? De cualquier forma sin tener que enumerar específicamente cada método, recorra cada miembro interno y aplíquelo manualmente.
Para hacer las cosas un poco más difíciles, los métodos son de variación de tamaño, pero son todos de tipo de retorno "vacío".
Creo que se puede echar un vistazo a la reflexión de Java, lo que le permite llamar a métodos en tiempo de ejecución. – Alvin
Pero aún necesitaría generar todos los stubs de método en la clase SingleList. Estoy buscando más una solución que actúe como un método invocado por todos. Al igual que llamar en PHP o python getattr. – efritz
oh no necesita actualizar, con la reflexión puede hacer SingleList.get ("someAttr"), luego la reflexión llamará al método getSomeAttr() por usted. Puede buscar en Google "org.springframework.beans.BeanUtils", que hace lo que quiere. Escribiré un ejemplo como respuesta formal más tarde si nadie me pega a eso jaja. – Alvin