首页 > 解决方案 > 通过将对象作为参数传递来在方法中使用对象

问题描述

我正面临涉及类和方法的情况。

为简单起见,假设您有 2 个类:A 和 B

在 A 类中,我有一个名为“jumpOnOtherClass”的方法。在 B 类中,我有另一个方法叫做“doThings”。

我希望类 A 方法将任何类的任何对象作为参数,以便它首先检查对象是否为空(因此它可以创建传递对象的新实例),然后执行对象的方法班级。

这是一个示例代码:

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
  }
}

我知道有例外需要考虑,但对于示例,我们假设类和方法存在并且被发现:)

我用“java.lang.reflect”尝试了一些东西,但这似乎不是实现我尝试做的事情的好方法......

任何帮助都会非常好!

感谢,并有一个愉快的一天!

标签: javaclassmethodsinstantiationinvoke

解决方案


我不完全确定我理解这个问题,但看起来您可能正在寻找一种方法来区分最初作为对象传递的类?您可以使用 instanceof 关键字,然后冒一些转换异常的风险

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();
    else if (objectFromAnyClass instanceof B) {
         if (methodToInvoke.equals("doThings")) 
            ((B) objectFromAnyClass).doThings();
    }
  }
}

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

推荐阅读