当前位置: 首页 > news >正文

网站建设及维护费用新云网站模版

网站建设及维护费用,新云网站模版,网站项目策划书模板,做衣服网站有哪些一、泛型 1.泛型类的创建与实例化 kotlin中泛型类的创建与实例化与Java中相似#xff1a; class AT(t:T){var valuet }fun main() {var a:AInt AInt(11) }Kotlin中存在类型推断#xff0c;所以创建实例可以写成#xff1a; var aA(11)2.泛型约束…一、泛型 1.泛型类的创建与实例化 kotlin中泛型类的创建与实例化与Java中相似 class AT(t:T){var valuet }fun main() {var a:AInt AInt(11) }Kotlin中存在类型推断所以创建实例可以写成 var aA(11)2.泛型约束 我们可以使用泛型约束来设定一个给定参数允许使用的类型。 Kotlin 中使用 : 对泛型的类型上限进行约束。 最常见的约束是上界(upper bound) fun T : ComparableT sort(list: ListT) {// …… }Comparable 的子类型可以替代 T。 例如: sort(listOf(1, 2, 3)) // OK。Int 是 ComparableInt 的子类型 sort(listOf(HashMapInt, String())) // 错误HashMapInt, String 不是 ComparableHashMapInt, String 的子类型对于多个上界约束条件可以用 where 子句 fun T copyWhenGreater(list: ListT, threshold: T): ListStringwhere T : CharSequence,T : ComparableT {return list.filter { it threshold }.map { it.toString() } }3.声明处型变 声明处型变可以使用in生产者使用和out 消费者使用修饰符。 in可以使类型参数逆变只能用作输入也就是可以作为入参的类型但是无法作为返回值的类型。 class Ain T(t:T){fun f(t: T){} } fun main() {val aAInt(111)a.f(11) }out使得一个类型参数协变只能用作输出可以作为返回值类型但是无法作为入参的类型 // 定义一个支持协变的类 class Runoobout A(val a: A) {fun foo(): A {return a} }fun main(args: ArrayString) {var strCo: RunoobString Runoob(a)var anyCo: RunoobAny RunoobAny(b)anyCo strCoprintln(anyCo.foo()) // 输出 a }4.类型擦除 Kotlin 为泛型声明用法执行的类型安全检测仅在编译期进行。 运行时泛型类型的实例不保留关于其类型实参的任何信息。 其类型信息称为被擦除。例如Foo 与 FooBaz? 的实例都会被擦除为 Foo*。 因此并没有通用的方法在运行时检测一个泛型类型的实例是否通过指定类型参数所创建 并且编译器禁止这种 is 检测。 类型转换为带有具体类型参数的泛型类型如 foo as List 无法在运行时检测。 当高级程序逻辑隐含了类型转换的类型安全而无法直接通过编译器推断时 可以使用这种非受检类型转换。编译器会对非受检类型转换发出警告并且在运行时只对非泛型部分检测相当于 foo as List*。 泛型函数调用的类型参数也同样只在编译期检测。在函数体内部 类型参数不能用于类型检测并且类型转换为类型参数foo as T也是非受检的。然而 内联函数的具体化的类型参数会由调用处内联函数体中的类型实参所代入因此可以用于类型检测与转换 与上述泛型类型的实例具有相同限制。 5.星号投影 有些时候, 你可能想表示你并不知道类型参数的任何信息, 但是仍然希望能够安全地使用它. 这里所谓安全地使用是指, 对泛型类型定义一个类型投射, 要求这个泛型类型的所有的实体实例, 都是这个投射的子类型。 对于这个问题, Kotlin 提供了一种语法, 称为 星号投射(star-projection): 假如类型定义为 Foo , 其中 T 是一个协变的类型参数, 上界(upper bound)为 TUpper ,Foo 等价于 Foo . 它表示, 当 T 未知时, 你可以安全地从 Foo 中 读取TUpper 类型的值.假如类型定义为 Foo , 其中 T 是一个反向协变的类型参数, Foo 等价于 Foo . 它表示, 当 T 未知时, 你不能安全地向 Foo 写入 任何东西.假如类型定义为 Foo , 其中 T 是一个协变的类型参数, 上界(upper bound)为 TUpper , 对于读取值的场合, Foo* 等价于 Foo , 对于写入值的场合, 等价于 Foo . 上一篇:Kotlin新手教程七委托
http://www.hkea.cn/news/14404775/

相关文章:

  • 零售网站制作数字创意设计包括哪些工具
  • 地方门户网站资讯该怎么做临沂网站建设教程
  • 苏州专业做网站比较好的公司域名如何连接wordpress
  • 用word做旅游网站网页搭建服务平台
  • 中山网站seo优化园林效果图网站
  • 网站建设 跑业务青岛网站建设收费哪个平台好
  • 注册个体工商户用于网站建设广州做网站的公司
  • 北京欢迎你 网站建设模板建站教程
  • 如何把网站做的和别人一样吗宁波公司注册代理公司
  • 洮南网站建设python如何做网页
  • 知名网站制作公司青岛分公司网络营销是不是网络推广
  • 网站创建教程国外图片设计网站有哪些
  • 网站域名和空间区别汕头公关公司
  • 唐山网站制作中国软文网
  • 揭阳专业网站制作公司如何用wd做网站设计
  • 网站备案代理为什么要用国外服务器做网站
  • 肥城 网站建设做早餐烧菜有什么网站
  • 制作网站的心得扬中市论坛
  • 天津品牌网站制作设计兼职在哪平台可以接单
  • 知名网站建设怎么样富阳区建设局网站首页
  • 论坛购物网站开发张家界互联网公司有哪几家
  • 怎样注册个人网站张家港网站设计
  • 网站建设新手看什么书建立网站的链接结构有哪几种形式简述其各自的优缺点
  • 返利网网站建设资深的家居行业网站开发
  • 网站建设应该学什么wordpress 页面目录下
  • 昌平网站开发公司电话网站在百度找不到了
  • 龙之向导外贸网站网址微信小程序第三方平台
  • 网站关键词多长企业如何网站建设
  • 做网站虚拟主机多少钱WordPress与odoo接口
  • 为什么建立网站wordpress正在执行例行维护_请一分钟后回来.