El uso de un objeto en un método por el que pasa como un parámetro

Larry I:

Estoy frente a una situación que involucra a clase y métodos.

Para hacerlo simple, imagine que tiene 2 clases: A y B

En la clase A, tengo un método llamado, digamos, "jumpOnOtherClass". En la clase B, tengo otro método llamado "doThings".

Me gustaría que el método de la clase A a tener como argumento cualquier objeto de cualquier clase, por lo que en primer lugar comprueba si el objeto es nulo (por lo que se crea una nueva instancia del objeto pasado), y luego ejecutar un método de la década de los objetos clase.

He aquí un ejemplo de código:

class MyMainClass
{
  private A objectA = new A();
  private B objectB;

  public void main()
  {
    this.objectA.jumpOnOtherClass(this.objectB,"doThings");
  }
}

class A
{
  public void jumpOnOtherClass(Object objectFromAnyClass, String methodToInvoke)
  {
    if(objectFromAnyClass == null) objectFromAnyClass = new DefaultConstructorOfB();

    objectFromAnyClass.getMethod(methodToInvoke);
  }
}

class B
{
  public void doThings()
  {
    //Do some stuff here
  }
}

Sé que hay una excepción a tomar en consideración, pero para el ejemplo vamos a suponer que la clase, y existen los métodos y se encuentran :)

Probé con las cosas "java.lang.reflect" pero no parece ser el camino bueno para lograr lo que trato de hacer ...

Cualquier ayuda sería muy bueno!

¡Gracias y que tenga un buen día!

Halex:

El único problema es que si la referencia es nula, no se puede realmente sabe la clase del "objeto" en tiempo de ejecución, por lo que tendrá que solucionar este problema mediante el suministro de información adicional.

Sugiero este enfoque (Implica reflexión):

public <T> void jumpOnOtherClass(T objectFromAnyClass, Class<T> classType, String methodToInvoke)
            throws
            NoSuchMethodException,
            IllegalAccessException,
            InvocationTargetException,
            InstantiationException
    {
        if(objectFromAnyClass == null) 
            objectFromAnyClass = classType.getDeclaredConstructor().newInstance();

        classType.getMethod(methodToInvoke).invoke(objectFromAnyClass);
    }

y utilizar de esta manera:

jumpOnOtherClass(this.objectB, B.class, "doThings");

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=394070&siteId=1
Recomendado
Clasificación