2017-05-13 85 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(); 
    } 
}