2017-05-13 43 views
0

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

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

+0

请发表您的代码,以帮助你 –

+1

1)Java没有*指针*。 --- 2)为什么要创建类的实例,如果要调用的方法是'static'? – Andreas

+1

是的,如果A和B都扩展相同的类或实现相同的接口,并且函数返回超类(对象始终工作)或接口。 – maraca

回答

0

您可以使用Java 8的方法引用的方法中。

既然你没有表现出任何代码,这是不可能知道你的方法签名是什么,所以我会认为void X(),即没有参数和返回值。

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

如果签名(不包括方法名)是不同的,你需要使用比Runnable其他功能接口。

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(); 
    } 
}