gpt4 book ai didi

java - java中方法内部的run方法

转载 作者:太空宇宙 更新时间:2023-11-04 10:26:16 25 4
gpt4 key购买 nike

我正在向网络服务发送超过 1 个请求,下面是该请求的示例。对于我的应用程序来说,从 Web 服务获取答案非常重要,因此如果出现异常,应用程序将尝试几次来获取答案。

因为得到一些简单的东西,比如deviceList = serviceAdapter.getDevices(); 变为以下代码。

boolean flag = true;
int counter = 1;
List<Device> deviceList = null;

while (flag) {
try {
deviceList = serviceAdapter.getDevices();
flag = false;
} catch (Exception e) {
try {
if (counter == 5) {
System.out.println("Timeout Occured!");
flag = false;
} else {
Thread.sleep(1000 * counter);
counter++;
}
} catch (InterruptedException e1) {
}
}
}

在我的应用程序中,我有很多请求,这意味着会有更多丑陋的代码。有没有一种方法可以让我调用我的请求方法作为另一个方法的参数,如下所示:

deviceList = wrapperMethod(serviceAdapter.getDevices());

问题是会有不同类型的请求,因此它们将返回不同类型的对象(列表,数组,字符串,int)并且它们的参数会改变。 java中有没有合适的解决方案来解决这个问题?

最佳答案

您可以传递Supplier<T>wrapperMethod :

public static <T> T wrapperMethod (Supplier<T> supp) {
boolean flag = true;
int counter = 1;
T value = null;

while (flag) {
try {
value = supp.get();
flag = false;
} catch (Exception e) {
try {
if (counter == 5) {
System.out.println("Timeout Occured!");
flag = false;
} else {
Thread.sleep(1000 * counter);
counter++;
}
} catch (InterruptedException e1) {
}
}
}
}

并用以下方式调用它:

List<Device> deviceList = wrapperMethod (() -> serviceAdapter.getDevices());

不过,我担心它会限制您在 lambda 表达式中调用的方法仅抛出 RuntimeException s。

关于java - java中方法内部的run方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50488682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com