在java中返回指针

时间:2017-05-13 21:48:27

标签: java

我有两个类,他们有相同的静态方法名称和函数以及第三类,我需要在条件情况下调用它,因为我有两个,我需要决定哪个被调用依赖于某些情况

所以我可以制作这个条件语句if(m==n) {return new Class A()} else {return new Class B() 在C类中的一个方法中,我可以用它来返回一个对象来指向A类或B类的方法

2 个答案:

答案 0 :(得分:0)

您可以使用Java 8方法参考。

由于您没有显示任何代码,因此无法知道您的方法签名是什么,所以我假设void X(),即没有参数和没有返回值。

Runnable r = (m==n ? A::mymethod : B::mymethod);
r.run();

如果签名(不包括方法名称)不同,则需要使用Runnable以外的功能接口。

答案 1 :(得分:0)

一个简单的解决方案是返回一个Object(这是你在Java中最接近void *的东西)并使用instanceof来知道你得到了哪个类:

Object getMyObject(int m, int n) {
   if(m==n) {
      return new Class A();
   }
   else {
      return new Class B();
   }
}

void useObject(int m, int n)
{
   Object o = getMyObject(m, n);
   if (o instanceof A) {
      A a = (A)o;
      a.doSomething();
   } else if (o instanceof B) {
      B b = (B)o;
      b.doSomethingElse();
   }
}