我有兩個類,他們有相同的靜態方法名稱和函數,第三類,我需要在條件情況下調用它,因爲我有兩個,我需要決定哪一個被稱爲依賴於某些情況下在java中返回指針
,所以我可以使這個條件語句if(m==n) {return new Class A()} else {return new Class B()
在C類中的方法,我可以用它來返回一個對象指向從A級或B
我有兩個類,他們有相同的靜態方法名稱和函數,第三類,我需要在條件情況下調用它,因爲我有兩個,我需要決定哪一個被稱爲依賴於某些情況下在java中返回指針
,所以我可以使這個條件語句if(m==n) {return new Class A()} else {return new Class B()
在C類中的方法,我可以用它來返回一個對象指向從A級或B
您可以使用Java 8的方法引用的方法中。
既然你沒有表現出任何代碼,這是不可能知道你的方法簽名是什麼,所以我會認爲void X()
,即沒有參數和返回值。
Runnable r = (m==n ? A::mymethod : B::mymethod);
r.run();
如果簽名(不包括方法名)是不同的,你需要使用比Runnable
其他功能接口。
這樣做的一個簡單的解決方案是返回一個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();
}
}
請發表您的代碼,以幫助你 –
1)Java沒有*指針*。 --- 2)爲什麼要創建類的實例,如果要調用的方法是'static'? – Andreas
是的,如果A和B都擴展相同的類或實現相同的接口,並且函數返回超類(對象始終工作)或接口。 – maraca