当前位置: 首页 > 知识库问答 >
问题:

Java8:传递对象的方法及其参数

吕飞翼
2023-03-14
class A {
    public Integer fetchMax() {
       // Make a network call & return result
    } 
}

class B {
    public Double fetchPercentile(Integer input) {
        // Make a network call & return result
    } 
}
class Retry {
     public static R retry(T obj, Function<T, R> method,  Object... arguments) {
           // Retry logic
           while(/* retry condition */)
           {
                obj.method(arguments);
           }
     }
}

共有1个答案

皇甫礼骞
2023-03-14

只需接受可调用的作为参数:

public static <R> R retry(Callable<R> action) {
    // Retry logic
    while(/* retry condition */) {
        action.call();
    }
}

这样称呼它:

Retry.retry(() -> a.fetchMax());
Retry.retry(() -> b.fetchPercentile(200));

您可能想使用google的Guava库的一个小扩展guava-retry,或者从guava-retrying中获得灵感,以允许创建可配置的重试策略(免责声明:我是原作者)。

 类似资料:
  • 问题内容: 我试图将选择的A类“获取”方法传递给B类中的方法。我已经将Java PassMethod作为Parameter签出,但是我无法以合理的方式采用接口方法解决问题。我宁愿 不 使用Java 8(lambdas),并尽可能避免反射。我的感觉是,我以错误的方式看待自己的问题。这是我要完成的工作的特定简化示例: 我有一个包含一些字段和get-method的类: 接下来,我将主类实例化为Map的V

  • 问题内容: 我正在尝试在RMI方法中添加参数。当我添加例如一切正常。但是我不确定是否可以传递我创建的对象。我是RMI的新手,所以我的代码非常简单: HelloIF 你好 RMI服务器 RMI客户端 最后是我的课堂上下文 我应该怎么做才能使传递上下文成为可能? 问题答案: 您的对象应实现。如我所见,这将是一个问题。之所以需要这样做是因为两个部分之间的通信是使用序列化完成的,因此需要发送给另一部分的每

  • 我试图在RMI方法中添加参数。当我添加例如时,一切正常。但是我不确定是否可以传递我创建的对象。我是新来的RMI,所以我的代码很简单: 你好。 你好 RMIServer RMIClient 最后是我的课堂背景 我应该怎么做才能使传递上下文成为可能?

  • 标题可能有点混乱或误导,但我试图比较一个字符串: 然后尝试将其与arraylist中包含的每个字符串进行比较 我得到了一个类,唯一重要的是“搜索”方法。 如果您没有注意到,此方法会接收对象的arraylist作为参数。现在的问题是

  • 本文向大家介绍详解Ruby中的代码块及其参数传递,包括了详解Ruby中的代码块及其参数传递的使用技巧和注意事项,需要的朋友参考一下 一,块的声明    块的声明在函数调用之后,用{..}括起来,或do..end封装。{}一般用在单行语句上,do..end用在多行语句上。   块可以带参数,与函数参数不同,块参数用||封装,当然,可以带多个参数。这些参数怎么定义,实际上是在函数内部定义好的,后面会讲

  • 本文向大家介绍Fragment跳转时传递参数及结果回传的方法(推荐),包括了Fragment跳转时传递参数及结果回传的方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 今天总结一下Fragment间的参数传递及结果返回的方法。 效果图: 1、点击“加载第二个Fragment按钮”,加载出第二个Fragment,同时传递过去参数:“从Fragment1传来的参数”这几个String; 2、当用户