java – 我应该在我的界面上暴露Stream吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 我应该在我的界面上暴露Stream吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1366字,纯文字阅读大概需要2分钟。
内容图文
如果我正在编写.NET代码,我会经常公开IEnumerable< T>它可能在哪里有意义.也许这取决于LINQ以及你可以使用foreach的事实,但是做到这一点感觉“正确”.
private List<String> _myList;
public IEnumerable<String> MyList
{
get { return _myList; }
}
现在我正在编写Java 8代码,我正在讨论是否应该公开Stream< T>在哪里可能以同样的方式?也许是因为我必须调用Collection.stream(),感觉就像是“正在工作”,但感觉不对?
private Collection<String> myCollection;
public Stream<String> getStuff() {
return myCollection.stream();
}
是流< T>意味着以与IEnumerable< T>相同的方式暴露在界面上.可能?
解决方法:
你问的是错误的问题.毕竟,支持两者并不困难,例如
Collection<Foo> getStuff();
default Stream<Foo> stuff() {
return getStuff().stream();
}
所以使用你的接口的代码不需要显式的stream()调用,而接口的实现者也不需要打扰它.
由于您始终通过Collection.stream()或显式地公开Stream支持,因此问题是您是否要公开Collection.虽然为Collection后端提供Stream很便宜,但从Stream收集Collection可能会很昂贵.
因此,暴露两种方式的接口表明它们同样可用,而对于不使用Collection后端的实现,这些方法中的一种可能比另一种方法更昂贵.
因此,如果您确定所有实现(包括将来的实现)将始终使用(或必须支持)集合,那么通过API公开它可能是有用的,因为集合支持Stream不支持的某些操作.如果您支持通过公开的Collection修改基础数据,则尤其如此.
否则,仅支持Stream访问可能是更好的选择.这使得实现可以自由地拥有其他后端而不是Collection.但是,这也意味着此API不支持Java 8之前的Java版本.
内容总结
以上是互联网集市为您收集整理的java – 我应该在我的界面上暴露Stream吗?全部内容,希望文章能够帮你解决java – 我应该在我的界面上暴露Stream吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。