如何在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中也是如此)?

谢谢

萨钦·古普塔(Sachin Gupta)

您可以reflection在这里尝试

例如:

public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException,
            IllegalArgumentException, InvocationTargetException {

  Method method = Test.class.getMethod("myFunction");

  boolean didwork = retry(method, 5);
  if (didwork) {
      System.out.println("I found my stuff");
  } else {
      System.out.println("I didn't found my stuff");
  }

}

public static boolean retry(Method method, int loopTry)
        throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {

  boolean success = false;
  for (int i = 0; i < loopTry; i++) {
    success = (Boolean) method.invoke(null);
    if (success) {
      break;
    }
  }
  return success;
}

public static boolean myFunction() {
  boolean found = false;

  //do stuff
  if(stuff){
     found = true;
  }

  return found;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Racket中将`and`作为函数传递?

来自分类Dev

如何在Rust中将匿名函数作为参数传递?

来自分类Dev

如何在C函数中将宏作为参数传递?

来自分类Dev

如何在Elixir中将函数作为参数传递?

来自分类Dev

如何在Java中将数组的一部分作为函数参数传递?

来自分类Dev

如何在Rust中将函数作为参数传递

来自分类Dev

如何在salt中将字典作为函数参数传递

来自分类Dev

如何在Java中将函数作为参数传递给Callable

来自分类Dev

如何在Python中将函数作为函数参数传递

来自分类Dev

如何在Vim脚本中将变量作为函数的参数传递

来自分类Dev

如何在Excel VBA函数中将日期作为参数传递

来自分类Dev

如何在Admin类中将函数作为参数传递

来自分类Dev

如何在Java中将任何数组作为参数传递?

来自分类Dev

我如何在C ++中将函数作为参数传递

来自分类Dev

如何在Rcpp / C ++中将函数作为参数传递?

来自分类Dev

如何在原型中将矩阵作为函数参数传递?

来自分类Dev

如何在C ++中将函数作为参数传递?

来自分类Dev

如何在page.evaluate()的函数参数中将页面作为参数传递?

来自分类Dev

如何在Python中将颜色作为函数参数传递

来自分类Dev

如何在javascript函数中将JSON对象作为函数参数传递?

来自分类Dev

如何在JSP的Java函数中将Struts2属性标记作为参数传递?

来自分类Dev

如何在函数中将元组列表作为参数传递?

来自分类Dev

如何在salt中将字典作为函数参数传递

来自分类Dev

如何在Java中将函数作为参数传递给Callable

来自分类Dev

如何在Excel VBA函数中将日期作为参数传递

来自分类Dev

如何在Python中将列表作为参数传递给函数

来自分类Dev

如何在java中将类作为参数传递

来自分类Dev

如何在 PowerBuilder 中将函数作为参数传递

来自分类Dev

如何在颤振中将函数作为参数传递

Related 相关文章

  1. 1

    如何在Racket中将`and`作为函数传递?

  2. 2

    如何在Rust中将匿名函数作为参数传递?

  3. 3

    如何在C函数中将宏作为参数传递?

  4. 4

    如何在Elixir中将函数作为参数传递?

  5. 5

    如何在Java中将数组的一部分作为函数参数传递?

  6. 6

    如何在Rust中将函数作为参数传递

  7. 7

    如何在salt中将字典作为函数参数传递

  8. 8

    如何在Java中将函数作为参数传递给Callable

  9. 9

    如何在Python中将函数作为函数参数传递

  10. 10

    如何在Vim脚本中将变量作为函数的参数传递

  11. 11

    如何在Excel VBA函数中将日期作为参数传递

  12. 12

    如何在Admin类中将函数作为参数传递

  13. 13

    如何在Java中将任何数组作为参数传递?

  14. 14

    我如何在C ++中将函数作为参数传递

  15. 15

    如何在Rcpp / C ++中将函数作为参数传递?

  16. 16

    如何在原型中将矩阵作为函数参数传递?

  17. 17

    如何在C ++中将函数作为参数传递?

  18. 18

    如何在page.evaluate()的函数参数中将页面作为参数传递?

  19. 19

    如何在Python中将颜色作为函数参数传递

  20. 20

    如何在javascript函数中将JSON对象作为函数参数传递?

  21. 21

    如何在JSP的Java函数中将Struts2属性标记作为参数传递?

  22. 22

    如何在函数中将元组列表作为参数传递?

  23. 23

    如何在salt中将字典作为函数参数传递

  24. 24

    如何在Java中将函数作为参数传递给Callable

  25. 25

    如何在Excel VBA函数中将日期作为参数传递

  26. 26

    如何在Python中将列表作为参数传递给函数

  27. 27

    如何在java中将类作为参数传递

  28. 28

    如何在 PowerBuilder 中将函数作为参数传递

  29. 29

    如何在颤振中将函数作为参数传递

热门标签

归档