不好意思問這個問題我已經看到它已經被問了很多,但不是我想的方式。如何在java中傳遞函數作爲參數來多次運行
我的目標是讓一個重試函數循環'n'的時間量來嘗試運行我作爲參數傳遞的方法。
所以在這種情況下,我想運行函數「myFunction()」,但我知道有時返回的值是false,我想運行它直到返回值爲true。
這就是我想它來運行:
public static void main (String [] args){
boolean did work = retry (myFunction(),5)
if(didwork){
System.out.println("I found my stuff");
} else {
System.out.println("I didn't found my stuff");
}
}
public boolean retry (Function function, int loopTry){
boolean success = false;
for(int i=0 ; i<loopTry ; i++){
success = function.run();
if(success){
break;
}
}
return success;
}
public boolean myFunction(){
boolean found = false;
//do stuff
if(stuff){
found = true;
}
return found;
}
我知道,這是不可能的(至少在Java 7中,也許在8)
我見過一些答案提示創建對象的具體功能等...但這不會使重試函數泛型,因爲我需要重新爲每個方法,我想重試一個對象,這不是我想要的。
所以我想知道是否有一個「乾淨」的方式來做到這一點(即使在Java 8中)?
謝謝
創建myFunction的接口。然後用你想要的東西實現一個類。您需要將此類的實例傳遞給'retry'來調用該函數。 – AxelH
似乎你的功能沒有輸入和輸出。請看Java中的'Supplier'接口。https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html – dty
'retry'接受一個'Function'對象參數,而不是'boolean'。這段代碼是否編譯? –