使用方法的参数调用类的方法,该方法是该类的对象

时间:2012-12-22 01:34:51

标签: java

考虑以下课程

Class A{
    public void m1(){
          System.out.println("test in A.m1()");
    }

    public void m2(){
          //do something a
    }
}


Class B{
    public void m1(){
          //do something b
    }

    public void m2(){
          //do something b
    }
}


Class C{
    public void m1(){
          //do something c
    }

    public void m2(){
          //do something c
    }
}

Class T{
    public void m3(Object obj1){
          obj1.m1();
    }

    public void m4(Object obj1){
          A a=new A();
          m3(a);
    }


}

所以现在我的问题是,有什么方法可以将一个开放对象发送到一个方法,该方法将检测它是什么类型的对象并调用该对象类的方法。在这个例子中,我希望看到输出:"test in A.m1()"

1 个答案:

答案 0 :(得分:3)

您可以使用Java Reflection API查询任意对象,看它是否有一个名为m1m2的方法然后调用它。但这非常难看。

有什么东西阻止你使用界面吗?下面的示例(其中" ..."表示您将特定实现的位置):

interface MyMethods {
  public void m1();
  public void m2();
}

class A implements MyMethods {
  public void m1() { ... }
  public void m2() { ... }
}

class B implements MyMethods {
  ...
}

class C implements MyMethods {
  ...
}

class T {
  public void m3(MyMethods obj1) {
    obj1.m1();
  } 

  public void m4(Object obj1) {
    // Call m3 three times with different object instance types...
    A a = new A();
    m3(a);
    B b = new B();
    m3(b);
    C c = new C();
    m3(c);
  }
}