「java逆变性」java逆顺序

博主:adminadmin 2023-03-22 09:55:07 730

今天给各位分享java逆变性的知识,其中也会对java逆顺序进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

求 java泛型中的PECS法则和协变逆变的区别

这个很复杂,基本要求看的懂70%,会用30%就可以了,你又不写源码会太多也没用。这个要写会写很多,而且也基本是云里雾里。但是记住一点,如果你的代码中用泛型,必须定义和构造都加,千万不能只加一个给自己留坑

kotlin 协变与逆变

kotlin中没有像java一样的? extends T这样的方式,也没有父类向子类转换,但是为了数据的安全性,提出了协变与逆变的说法:

概念:

协变:类型向上转换,像java中的子类向父类转换

逆变:类型向下转换,父类向子类转换

特点:

协变只能出现在返回值中,逆变只能出现在方法的参数中,还有一种既不是协变也不是逆变的类型,什么地方都可以使用例如:

因为其中的T 出现在了全局变量的地方,所以既不是协变也不是逆变。

逆变的情况(作为参数传入并且不能接受BaseActivityView的泛型作为返回值):

协变的情况(作为返回值并且不能接受BaseActivityView的泛型作为参数传入):

使用场景:

可以移步这里进行更深层次理解

java in int 类型什么意思?

AIDL是 Android Interface definition language的缩写,一看就明白,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。

通常我们在定义aidl文件里面的方法的时候,很少注意或者很少用到到参数的修饰符:in 、out 、inout,它们代表的是客户端和服务端数据相互传递的规则。注意,这里只是针对参数的规则,并不是方法返回值的规则。

如下介绍in/out/inout:

in代表参数只能从客户端传到服务端,服务端在执行这个方法的时候,会读取服务端传过来的参数,并以此参数执行方法。在服务端把方法执行完之后,并不会再做其他动作。

out代表此参数从客户端传递不到服务端,也就是在服务端执行方法的时候,并不会去读取客户端的这个参数,而是自己new一个新对象,用此新对象来作为参数执行方法。但是在方法执行完之后,会把这个参数又传回客户端,更新客户端的对象参数值。

inout则是相互之间都是可以传递和感知的。

关于java逆变性和java逆顺序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。