首页 / JAVA / java – 使用泛型链接任务
java – 使用泛型链接任务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 使用泛型链接任务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1549字,纯文字阅读大概需要3分钟。
内容图文
![java – 使用泛型链接任务](/upload/InfoBanner/zyjiaocheng/751/b7c786f32dde48409b759b3fbc0a368c.jpg)
我正在尝试为链接任务创建一个API.
首先,我设计了一个定义任务的非常简单的界面:
public interface Task<U, V> {
U execute(V input);
}
其中V是输入类型,U是任务的输出类型.
我要创建的是一个Chain类,它将链接一个任务列表.
例如,我想执行:Task1< TypeA,TypeB> – > Task2< TypeB,TypeC> – > Task3< TypeC,TypeD>
因此,该链类将是任务< TypeA,TypeD>.
所以我编写了这段代码,它不能编译:
public class Chain<U, V> implements Task<U, V> {
List<Task<?, ?>> taskList;
public Chain() {
taskList = new LinkedList<Task<?, ?>>();
}
@Override
public U execute(V input) {
V currentInput = input;
U output = null;
for (Task<?, ?> task : taskList) {
output = task.execute(currentInput);
// Compile error because currentInput is of type V
// and output of type U
currentInput = output; // Compile error as well
}
return output;
}
// Other methods to add and remove tasks in the list
}
我明白为什么它无法编译,但我不知道如何实现一些有效的方法并解决我的问题.
有没有人遇到过这种问题?
亲切的问候,
本
解决方法:
您的Task类与Guava类Function几乎相同.您可以使用它而不是定义自己的类.
使用Function的一个优点是你可以使用Functions类中的辅助方法,其中一个是compose():
Function<String,MyObject1> stringToMyObject1 = ...;
Function<MyObject1, AnotherObject> myObject1ToAnotherObject = ...;
Function<String,AnotherObject> stringtoAnotherObject = Functions.compose(myObject1ToAnotherObject, stringToMyObject1);
通过重复调用compose()可以实现更深的链接.
即使您出于某种原因不想使用Guava,您也可以从这种方法中获取灵感:使用已知类型参数链接任意两个函数/任务会创建一个具有易于计算的类型参数的新函数/任务.
内容总结
以上是互联网集市为您收集整理的java – 使用泛型链接任务全部内容,希望文章能够帮你解决java – 使用泛型链接任务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。