gpt4 book ai didi

java - 创建包装器的便捷方法

转载 作者:行者123 更新时间:2023-12-01 20:51:08 34 4
gpt4 key购买 nike

问题

我需要对多种方法的结果反复执行逻辑。这些方法可以具有任意结果类型。简单的用例如下所示:

具有执行方法的包装类:

/**
* Wrapper class which executes inner logic, processes the result of that logic and returns the processed result.
*
* @param <T>
*/
public abstract class Wrapper<T> {
/**
* Perform inner logic
*/
public abstract T run();

/**
* Invoke inner logic and process it.
*/
public T execute() {
T result = run();
// TODO: process result
return result;
}
}

以及内部类中的逻辑,包装器的示例用法:

public class WrapperDemo {      
/**
* Simple invocation of the inner logic and then the outer logic
*/
public static Boolean testMethod() {
// wrap around logic and execute
return new Wrapper<Boolean>() {
@Override
public Boolean run() {
// TODO: perform logic, simply returning true for now
return Boolean.TRUE;
}
}.execute();
}

public static void main(String[] args) {
// demo method invocation
Boolean result = WrapperDemo.testMethod();
// process result
System.out.println(result);
System.exit(0);
}
}

我必须将其应用到数百个方法中。

问题

有谁知道一种更方便的方法来使用更少的 testMethod 代码(例如,也许注释)来编码此代码?

最佳答案

如果您有 Java 8,您可以编写以下内容:

public static <T> T execute(Wrapper<T> wrapper) {
return wrapper.execute();
}

然后按如下方式使用它:

public static Boolean testMethod() {
return execute(()-> {
return Boolean.TRUE;
});
}
<小时/>

虽然我看不出这比以下更好:

public static <T> T wrap(T result) {
// Process result
return result
}

像这样使用它:

public static Boolean testMethod() {
return wrap(Boolean.TRUE);
}

关于java - 创建包装器的便捷方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490231/

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