栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否有Java等效于C#的'yield'关键字?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否有Java等效于C#的'yield'关键字?

我知道的两个选项是2007年的Aviad Ben Dov的infomancers-
collections库
和2008年的Jim
Jimler的YieldAdapter库
(在另一个答案中也提到了)。

两者都允许您使用

yield return
Java中的-like结构编写代码,因此两者都可以满足您的要求。两者之间的显着区别是:

机械学

Aviad的库使用字节码操作,而Jim的库使用多线程。根据您的需要,每种可能都有自己的优点和缺点。Aviad的解决方案可能更快,而Jim的解决方案更可移植(例如,我认为Aviad的库不能在Android上运行)。

接口

Aviad的库具有更简洁的界面-这是一个示例:

Iterable<Integer> it = new Yielder<Integer>() {    @Override protected void yieldNextCore() {        for (int i = 0; i < 10; i++) { yieldReturn(i); if (i == 5) yieldBreak();        }    }};

虽然Jim的方法要复杂得多,但要求您

adept
使用
Collector
具有
collect(ResultHandler)
方法的泛型…嗯。但是,您可以在Zoom
Information中
对Jim的代码使用类似这样的包装器,从而大大简化:

Iterable<Integer> it = new Generator<Integer>() {    @Override protected void run() {        for (int i = 0; i < 10; i++) { yield(i); if (i == 5) return;        }    }};

执照

Aviad的解决方案是BSD。

Jim的解决方案是公共领域,上面提到的包装器也是如此。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号