javasink的简单介绍

博主:adminadmin 2022-11-28 04:15:08 91

本篇文章给大家谈谈javasink,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java 泛型 lt;super T>中 super 怎么 理解?与 extends 有何不同

java泛型是1.5引进的一个新概念.本题对于"?superT"和"?extendsT",我从书上摘个经典的例子给你看看,如果不能理解,那么你就参考以下书籍慢慢体会,循序渐进!"?superT"和"?extendsT",都是java泛型通配符,而用法又有区别,还有super和extends不是java类关系中的超类和继承的意思,他是通配符的下限和上限限制.下面看一个通配符得高级用法:在这一部分,我们来考虑一些通配符得高级用法。我们已经看到了上限通配符在从一个数据结构中进行读取的几个例子。现在考虑相反的情况,一个只写的数据结构。接口Sink是这种情况的一个简单例子。interfaceSink{voidflush(Tt);}我们可以想象他被如下面的代码一样使用。方法writeAll()被设计来把集合coll的所有元素flush到sinksnk,并且返回最后一个flush的元素。publicstaticTwriteAll(Collectioncoll,Sinksnk){Tlast=null;for(Tt:coll){last=t;snk.flush(last);}returnlast;}Sinks;Collectioncs;Stringstr=writeAll(cs,s);//非法的调用!!像上面所写,writeAll()的调用是非法的,因为没有有效的类型参数可以被推断出来。String或Object都不是T的合适的类型,因为Collection的元素和Sink的元素必须是同样的类型。我们可以解决这个问题,通过使用通配符来修改writeAll()的方法签名,如下:TwriteAll(Collectioncoll,Sinksnk){…}Stringstr=writeAll(cs,s);//可以调用但是返回值类型错误这个调用现在是合法的,但是赋值产生错误,因为推断出的返回值类型是Object因为T匹配了Sink的类型,Object。解决方案是使用一种我们还没有见过的有限制的通配符:有下限的通配符。语法?superT表示T的一个未知的父类(或者是T自己)。这跟我们用?extendsT表示T的一个未知的子类是对应的。TwriteAll(Collectioncoll,Sinksnk){…}Stringstr=writeAll(cs,s);//YES!!!使用这个语法,这个调用是合法的,推断出来的T是String,正是我们想要的。现在让我们看一个更现实的例子。一个java.util.TreeSet代表一个有序的元素是E类型的树。创建一个TreeSet的一个方法是传递一个Comparator对象给构造函数。这个Comparator将会用来按照需要对TreeSet进行排序。TreeSet(Comparatorc)Comparator接口是核心:interfaceComparator{intcompare(Tfst,Tsnd);}假定我们要创建一个TreeSet并传递一个合适的Comparator,我们需要传一个能比较String的Comparator。这可以是一个Comparator,也可以是一个Comparator。然而我们不能用Comparator来调用上面的构造函数。我们可以使用一个有下限的通配符来得到我们需要的灵活性:TreeSet(Comparatorc)这允许任何可用的Comparator被传递进去。作为使用下限通配符最终的例子,让我们来看看方法Collections.max(),它返回一个集合中的最大的元素。现在,为了让max()能工作,传进来的集合中的所有元素必须实现Comparatable接口。而且,他们必须都能够被彼此比较(allbecomparabletoeachother)。第一个尝试是:publicstaticTmax(Collectioncoll)就是说,方法的参数是某一个能和自己进行比较的T的集合。这限制太严格了。为什么?考虑一个能和任何对象进行比较的类型:classFooimplementsComparable{}Collectioncf=;Collections.max(cf);//应该能工作cf中的每个元素都可以和每个cf中的其他元素进行比较,因为每个这样的元素都是一个Foo,它可以和任意的对象进行比较,也可以和另一个Foo进行比较。但是,使用上面的方法签名,我们发现这个调用被拒绝。推断出来的类型必须是Foo,但是Foo没有实现接口Comparable。T精确的(exactly)和自己能比较是不需要的。所需要的是T能够和它的父类中的一个进行比较,这导出:(注:Collections.max()的实际方法签名更复杂,我们在第10部分再讨论。)publicstaticTmax(Collectioncoll)这个推论对大多数想让Comparable对任意类型生效的用法中都有效:你总是应该使用Comparable。总之,如果你有一个只使用类型参数T作为参数的API,它的使用应该利用下限通配符(?superT)的好处。相反的,如果API只返回T,你应该使用上限通配符(?extendsT)来给你的客户端更大的灵活性。(原文:ThisreasoningappliestoalmostanyusageofComparablethatisintendedtoworkforarbitrarytypes:YoualwayswanttouseComparable.Ingeneral,ifyouhaveanAPIthatonlyusesatypeparameterTasanargument,itsusesshouldtakeadvantageoflowerboundedwildcards(?superT).Conversely,iftheAPIonlyreturnsT,you'llgiveyourclientsmoreflexibilitybyusingupperboundedwildcards(?extendsT).)。

@link这种注释实在生成文档后,当点击@link后面的Source、Sink等类名后会连接到对应的类文件或类文档中。

FluxSink实例及解析

本文主要研究一下FluxSink的机制

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxSink.java

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/Flux.java

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxCreate.java

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/LambdaSubscriber.java

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/FluxCreate.java#SerializedSink.next

reactor-core-3.1.3.RELEASE-sources.jar!/reactor/core/publisher/LambdaSubscriber.java

fluxSink这里看是无限循环next产生数据,实则不用担心,如果subscribe与fluxSink都是同一个线程的话( 本实例都是在main线程 ),它们是同步阻塞调用的。

sink什么意思

sink [siŋk]

(过去式sank .过去分词sunk)

n. 水槽;洗涤槽;污水坑

vi. 下沉;消沉;渗透

vt. 使下沉;挖掘;使低落

网络释义

sink:洗碗池|汇点|洗涤槽

sink mark:凹痕|缩水|沈标

sink well:掘井

相关例句

1.Your voice might sink,but I can hear.

你小点儿声,我听得见。

2.Is this a sink or a shower?

这是一个水池还是一个浴池?

3.Unblocked the sink in the Canteen.

餐厅的洗涤槽不阻塞了。

4.Know about sink and float.

认识沉与浮的概念。

5.Why do they soar when others sink?

为什么他们翱翔,而别人坠落?

6.Focus on their ships! Sink 'em all!

集中火力攻击敌舰!全部击沉!

7.A small leak will sink a great ship.

一个小漏洞可能弄沉一艘大轮船

JAVA中exch()和sink()什么意思?

楼主这是两个方法。exch和sink是方法名。(a,1,N--)是需要传递的参数值。方法是自己定义的,不是java类库里面的,这里我也不知道具体是什么内容了

javasink的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javasink的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。