java - 将对象作为参数传递并获取对象作为回报
问题描述
我有如下所示的代码,最后我展示了当用户传递字符串参数时如何调用它,他将接收字符串参数,我的问题是有人可以告诉我用户将如何调用我的代码通过将对象类型作为参数传递
下面是界面
interface applyBuisnessRule<T> {
public T execute(String jobCode) throws Exception;
}
下面是类
class CardvaletImpl<T> implements applyBuisnessRule<T> {
private static final String Success = null;
public T execute(String jobCode) throws Exception {
T result = null;
// put your logic and populate result here. I believe you are not going to return Success every time as it String
return result;
}
}
现在这段代码将字符串作为参数传递
CardvaletImpl<String> cardvaletImpl = new CardvaletImpl<>();
String result = cardvaletImpl.execute("JOBCODE");
请告知我如何将对象作为参数传递并获取对象作为回报,就像我在上面对字符串的情况所做的那样
还请告知我怎样才能使下面的类也一样通用,因为这是调用我上面的类的上下文类
public class BuisnessRuleContext {
private Object Object = null;
private applyBuisnessRule buisnessRuleName;
public void setAbr(applyBuisnessRule abr) {
this.buisnessRuleName = abr;
}
//use the strategy
public Object applyBuisnessRule(String jobcode) {
try {
Object = buisnessRuleName.execute(jobcode);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return Object;
}
}
解决方案
如果您想要与参数相同类型的对象:
interface ApplyBusinessRule<T> {
public T execute(T jobCode) throws Exception;
}
*注意更正的接口名称。
如果您想要不同类型的对象作为参数:
interface ApplyBusinessRule<T, R> {
public R execute(T jobCode) throws Exception;
}
这类似于 Java 8 定义Function
接口的方式:
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
要了解更多信息,请阅读Java™ 教程。
推荐阅读
- scala - 合并数组中的 Apache Spark 列和结构数组中的结构
- xamarin.forms - Xamarin 表单:根据字符数增加编辑器高度
- azure - Azure Cosmos DB 模拟器中的数据资源管理器
- swift - 将 Range 和 StrideTo 转换为 Sequence 时出现异常错误
- python - 如何初始化函数的绘图以从 0 开始?
- mysql - 从联合中排序列由另一列选择
- php - HTML 到 MS Word 文档的总页数
- html - bootstrap-4.0 表 tr 类 d-flex 在 Firefox 中无法正常工作
- javascript - mapStateToProps 不会在更改时更新组件
- 2d - 带有 NAN 的二维数组的 FFT