美文网首页
iOS9新特性之泛型/协变/逆变

iOS9新特性之泛型/协变/逆变

作者: gzliq | 来源:发表于2016-03-26 19:58 被阅读0次

为什么苹果要推出泛型

1.迎合swift

2.泛型作用:限制类型

泛型好处:

1.提示开发者集合中是什么类型,提高代码规范,减少程序员之间交流

2.从集合(数组,字典,NSSet)中取出来元素可以使用点语法

泛型声明格式:在声明类型的时候,声明泛型,在类型后面<泛型名称>

泛型定义格式:使用类型才叫定义,类型<限制类型>

泛型:仅仅是报警告

id不能使用点语法

什么样的类型才可以使用泛型?为什么集合可以使用泛型?

只有集合才可以使用泛型,其他类型暂时不支持?

定义泛型,必须要先声明泛型

开发场景: 

声明一个类,有些属性或者方法类型不确定,但是在使用这个类,就能很清楚知道这个对象中属性或者方法是什么类型

Java,iOS

需求:声明一个人类,在声明的时候并不知道可以做什么事情,但是创建人对象,就知道让这个人做什么事情

泛型开发场景:限制集合

书写格式:

Person.h    Language.h    iOS.h    Java.h

iOS *ios = [[iOS alloc] init];       

 Java *java = [[Java alloc] init];           

// iOS   

Person<iOS *> *p = [[Person alloc] init];

p.language = ios;       

// Java   

Person<Java *> *p1 = [[Person alloc] init];

p1.language = java;

协变和逆变用于继承类型转换,子类转父类

__covariant(协变):子类转父类

__contravariant(逆变):父类转子类

相关文章

  • iOS9新特性之泛型/协变/逆变

    为什么苹果要推出泛型 1.迎合swift2.泛型作用:限制类型 泛型好处: 1.提示开发者集合中是什么类型,提高代...

  • Kotlin学习笔记 - 泛型

    1. 基本用法 2. 型变 型变包括 协变、逆变、不变 三种: 协变:泛型类型与实参的继承关系相同 逆变:泛型类型...

  • Kotlin泛型的高级特性(六)

    泛型的高级特性1、泛型实化2、泛型协变3、泛型逆变 泛型实化 在Java中(JDK1.5之后),泛型功能是通过泛型...

  • Scala 通俗易懂 ---- 协变、逆变、不变

    协变、逆变、不变 Scala 语言中协变、逆变、不变是指拥有泛型的类型,在声明和赋值时的对应关系 协变:声明时泛型...

  • 泛型编程中的型变

    在泛型编程中,经常会提到型变。型变分为两种:协变与逆变。协变covariant表示与泛型参数T的变化相同,而逆变c...

  • Java泛型学习笔记(2)

    书接上回,这次我们来研究下泛型的另一个特性,泛型方法和协变逆变。 Whaaat?什么是协变逆变?别着急我看的时候也...

  • Scala 泛型协变与泛型边界

    代码准备 泛型协变 泛型协变、逆变、不变是指拥有泛型的类在声明和赋值时的对应关系。 协变:声明时泛型是父类,赋值时...

  • Java协变和逆变

    泛型的协变与逆变 协变与逆变用来描述类型转换(type transformation)后的继承关系,其定义如下:如...

  • JAVA泛型与类型安全

    1. 基础泛型 2. 协变与逆变与不变 协变 简单来说即: Java中的数组是协变的 逆变与协变相对,逆转了类型关...

  • 协变和逆变

    Java的泛型只有通配符?和extends、super,没有语法上的协变和逆变。 什么是协变和逆变? 在混合OO和...

网友评论

      本文标题:iOS9新特性之泛型/协变/逆变

      本文链接:https://www.haomeiwen.com/subject/vnbdlttx.html