首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin型 ① ( 型类 | 参数 | 型函数 | 多参数 | 型类型约束 )

文章目录 一、型类 二、参数 三、型函数 四、多参数 五、型类型约束 一、型类 ---- 定义一个 型类 , 将 参数 T 放在 尖括号 中 , 该参数放在 类名后...---- 函数 的 参数 或 返回值 类型为 型类型 , 则该函数称为 型函数 ; 代码示例 : 该代码中 , 型函数 logT 的 参数 和 返回值 都是 T 参数 类型 ; class...---- 型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是型 的话 , 在该型函数 中可能需要使用多个型 , 使用不同的字母表示不同的型 ; 如果函数中 引入了新的型类型...R 的类型是 Boolean 类型 ; 3.14 true 五、型类型约束 ---- 在 型类 , 型函数 中 , 使用型前 , 需要声明 参数 : 型类 参数 声明 : 如果类中...return action(item) } 在 尖括号 中声明 参数 时 , 可以指定 型类型 的 约束 , 型类型 必须是某个类型的子类 ; 在下面的代码中 , Soldier

2.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin型总结 ★ ( 型类 | 参数 | 型函数 | 多参数 | 型类型约束 | 可变参数结合型 | out 协变 | in 逆变 | reified 检查参数类型 )

文章目录 一、型类 二、参数 三、型函数 四、多参数 五、型类型约束 六、可变参数 vararg 关键字与型结合使用 七、使用 [] 运算符获取指定可变参数对象 八、型 out 协变...---- 函数 的 参数 或 返回值 类型为 型类型 , 则该函数称为 型函数 ; 代码示例 : 该代码中 , 型函数 logT 的 参数 和 返回值 都是 T 参数 类型 ; class...---- 型函数 中 如果涉及到 匿名函数 参数 , 匿名函数 的 参数返回值 都是型 的话 , 在该型函数 中可能需要使用多个型 , 使用不同的字母表示不同的型 ; 如果函数中 引入了新的型类型...return action(item) } 在 尖括号 中声明 参数 时 , 可以指定 型类型 的 约束 , 型类型 必须是某个类型的子类 ; 在下面的代码中 , Soldier...在 Java 中 , 运行时 不知道 参数 的 具体类型 ; 在 Kotlin 中可以 通过 reified 关键字检查 参数类型 ; Java 中如果想要知道 参数 具体类型 , 通过常规的方法无法实现

3.7K10

Kotlin 型:类型参数约束

上一篇文章讲了 Kotlin 型:基本使用,接下来我们再进一步了解型使用相关的进阶知识。本篇是 Kotlin 型类型参数约束的讲解,更多内容可点击链接查看。...Kotlin 型:基本使用Kotlin 型:类型参数约束系列持续更新中,欢迎关注订阅。...() where T : Printable, T : Serializable { fun print(doucument: T) { // 编写具体实现,先发送...,这使得型类在具体实现的时候,需要考虑参数为空的情况,也让编写代码的具体实现变得复杂。...当我们定义一个范型类/范型函数时,由于「类型参数」在被「类型实参」替换时可使用「可空类型」和「非空类型」这两种类型,这会迫使我们在做具体实现要考虑可空类型,带来了不必要的复杂性。

2.1K31

Kotlin 型:基本使用

Kotlin 型:基本使用Kotlin 型:类型参数约束系列持续更新中,欢迎关注订阅。为什么需要型假如我们想实现自定义的列表类型,用于存放数值、字符串或其他具体的类型。...什么是型提供了一种方法,允许我们定义带「类型参数」的型类/型函数,在创建型类的实例、调用型函数时,「类型参数」将替换成具体的「类型实参」。...当我们在「定义」型类、型函数时,我们使用的是「类型参数」;当我们在「使用」型类、型函数时,我们使用的是「类型实参」。..., Int、String、Any 或者其他自定义的具体类型。...下一篇文章,将介绍 Kotlin 型的进阶知识:类型参数约束

1.7K30

Kotlin入门(11)江湖绝技之特殊函数

上一篇文章介绍了Kotlin对函数的输入参数所做的增强之处,其实函数这块Kotlin还有好些重大改进,集中体现在几类特殊函数,比如型函数、内联函数、扩展函数、尾递归函数...型函数 函数的输入参数类型必须在定义函数时就要指定,可是有时候参数类型是不确定的,只有在函数调用时方能知晓具体类型,如此一来要怎样声明函数呢?...定义型函数时,得在函数名称前面添加“”,表示以T声明的参数(包括输入参数和输出参数),其参数类型必须在函数调用时指定。...下面举个型函数的定义例子,目的是把输入的可变参数逐个拼接起来,并返回拼接后的字符串,示例代码如下: //Kotlin允许定义全局函数,即函数可在类外面单独定义,然后其他类也能直接调用 fun ...基于以上情况,Kotlin推出了扩展函数的概念,允许开发者给系统类补写新的方法,而无需另外编写额外的工具类。

1.2K10

Kotlin学习之路(4)函数的运用

Kotlin 新增了关键字 fun,这个fun类似Java中 关键字class ⑤ Java声明输入参数格式 “变量 变量名称”而Kotlin 前面说过参数的命名 “变量名称:变量类型” ⑥...【几种特殊的函数】 型函数 按照之前的例子,函数的输入参数类型必须定义函数的时候需要指定 例如:var int_array:Array = arrayOf(1,2,3) 定义型函数的时候...} return str } 调用appendString函数,就跟调用arrayOf方法一样,只需在函数名称后面加即可 内联函数 前面我们定义的型函数...因为类的成员依赖于类,只有型类才能拥有成员型函数,而普通类是不允许定义型函数的,否则编译器直接报错。...不过也有例外当参数类都是继承于某种类型,那么允许在定义函数时指定从这个基类化开,凡是继承自该基类子类,都可以作为输入参数进行调用,反之无法调用!

72710

Kotlin型 ② ( 可变参数 vararg 关键字与型结合使用 | 使用 [] 运算符获取指定可变参数对象 )

文章目录 一、可变参数 vararg 关键字与型结合使用 二、使用 [] 运算符获取指定可变参数对象 一、可变参数 vararg 关键字与型结合使用 ---- 如果 型类型 T 的参数 是 vararg...可变参数 , 则在接收 可变参数 时 , 需要使用 Array 类型 的变量进行接收 ; 参数为 vararg 可变参数 , 那么可以传入多个 指定类型的 实例对象 ; 在下面的代码中..., 声明了 参数 T , T 类型不必须是 Weapon 类的子类类型 ; 在 Soldier 的主构造函数中 , 传入了 型 T 类型的 可变参数 对象 ; 如果要使用 成员属性 接收该 型...T 类型的 可变参数 对象 , 则必须 使用 Array 类型对象进行接收 ; 代码示例 : class Soldier(vararg _items: T) {...二、使用 [] 运算符获取指定可变参数对象 ---- 如果想要 使用 [] 运算符获取指定可变参数对象 , 就需要 重写 该类 的 get 函数 进行 运算符重载 ; 如果想要通过 Soldier 实例对象

63920

转向Kotlin——

KotlinKotlin型并没有提供通配符,取而代之的是out和in关键字。用out声明的型占位符只能在获取型类型值得地方,函数的返回值。...用in声明的型占位符只能在设置型类型值的地方,函数的参数。 我们习惯将只能读取的对象称为生产者,将只能设置的对象称为消费者。...型函数 不仅类可以有参数,函数一样可以有参数参数放在函数名称之前。...fun getList(item: T): List { ... } 调用型函数时,应该在函数名称之后指定调用端类型参数。...小结 Kotlin型是在Java型的基础上进行了改进,变得更好用,更安全,尽管上述的型技术不一定都用得上,但对于全面了解Kotlin型会起到很大作用。

91720

Kotlin学习日志(四)函数

Kotlin又引进了命名函数的概念,说的是调用函数时可以指定某个参数的名称及其数值,格式参数名=参数值”,演示代码如下: ?...三、特殊函数 3.1 型函数 我们先声明几个型 var int_array:Array = arrayOf(1,2,3) var long_array:Array...注意到尖括号内部制定了数组元素的类型,这正是型的写法“”。由“Array”声明而来的变量可称作型变量,至于等号后面的arrayOf*便是型函数。...定义型函数时,需要在函数名称前面添加“”,表示以T声明的参数(包括输入参数和输出参数),其参数类型必须在函数调用时指定,代码示例如下: //Kotlin允许定义全局函数,即函数可在单独的kt文件中定义...= tmp } 不过这函数的缺点也很明显,就是它声明了扩展自Array,就不能用于浮点数组和双精度数组及其他的数组,所以,为了增强交换函数的通用性,必须把swap改写为型函数

1.8K10

Kotlin型 ③ ( 型 out 协变 | 型 in 逆变 | 型 invariant 不变 | 型逆变协变代码示例 | 使用 reified 关键字检查参数类型 )

- 使用 in 关键字 , 可以使 父类型对象 赋值给 子类型对象 ; 在 型类 中 , 如果只将 型类型 作为 函数的参数 类型 , 则在 声明 参数 类型 时 , 在 参数 前...---- 型类 中 参数 有 子类 和 父类 , Java 语言中 , 参数 是 子类 的 型类对象 , 不可以赋值 给 参数 是父类 的变量 ; Java 中的型对象赋值 ,...语言中 , 参数是 子类 的 型类对象 , 可以赋值给 参数 是父类 的变量 , 前提是参数必须使用 out 关键字修饰 ; 使用 in 关键字 , 可以使 父类型对象 赋值给...// FastFoodFactory 是 Producer 子类 // Producer 的参数 FastFood 是 Food 的子类 // 在 Kotlin...在 Java 中 , 运行时 不知道 参数 的 具体类型 ; 在 Kotlin 中可以 通过 reified 关键字检查 参数类型 ; Java 中如果想要知道 参数 具体类型 , 通过常规的方法无法实现

1.6K10

Kotlin Vocabulary | Reified: 类型擦除后再生计划

但是使用型也会有一些限制,比如当您在型函数中想要获取型所表示类型的具体信息时,编译器就会报错,提示说相关的信息不存在。而 "reified" 关键字,正是为了解决此类问题诞生的。...解决这一问题的一个方法,是将型实际代表的类型信息作为一个参数传递给函数。...为了达到这一目标,Kotlin 提供了一个特别的关键字 reified,使用它就可以在型函数中获取所需的类型信息。只要您对型的实现方式有所了解,就可能会不禁惊呼: 这怎么可能!...但是,当在型函数中需要获取类型信息时,类型擦除的实现方式就显得力不从心了。...若是要在参数中使用 reified,那首先需要将函数标记为 inline,然后在参数之前添加 reified 关键字即可。

1.2K10

第8章 型第8章

但是在集合类的场景下,我们通常需要编写可以应用于多种类型的代码,我们最简单原始的做法是,针对每一种类型,写一套刻板的代码。这样做,代码复用率会很低,抽象也没有做好。我们能不能把“类型”也抽象成参数呢?...本章我们来一起学习一下Kotlin型的相关知识。...在集合类API中大量地使用了型。在Java 中我们可以为类、接口和方法分别定义参数,在Kotlin中也同样支持。本节我们分别介绍Kotlin中的型接口、型类和型函数。...8.2.1 型接口 我们举一个简单的Kotlin型接口的例子。...super T 8.6 类型擦除 Java和Kotlin型实现,都是采用了运行时类型擦除的方式。也就是说,在运行时,这些类型参数的信息将会被擦除。 型是在编译器层次上实现的。

1.9K20

Kotlin 极简教程 》第6章

也就是说,在运行时,这些类型参数的信息将会被擦除。Java 和Kotlin型对于语法的约束是在编译期。...List,?可以代表任意类型,“任意”是未知类型。例如: Pair 参数替换后的Pair类有如下方法: ? getFirst() void setFirst(?)...Int, 因此编译器知道我们创建的实例是 Box 类型 6.5 型函数 类可以有类型参数。...} 要调用型函数,在函数名后指定类型参数即可: val l = singletonList(1) 型函数与其所在的类是否是型没有关系。...型函数独立于其所在的类。我们应该尽量使用型方法,也就是说如果使用型方法可以取代将整个类型化,那么就应该只使用型方法,因为它可以使事情更明白。 本章小结 型是一个非常有用的东西。

1.7K30

Kotlin | 9.

本章内容包括: 声明型函数和类 类型擦除和实化类型参数 声明点变型和使用点变型 9.1 型类型参数 // 如果要创建一个空的列表,必须显示的指定,有值的话可以被推导出来...----------------------*/ // slice 型函数的类型形参为T fun List.slice(indices: IntRange...和Java一样,Kotlin型在运行时也被擦除了。...会提示报错 // println(Validators[String::class].validate(42)) 总结 Kotlin型和 Java 相当接近:它们使用同样的方式声明型函数型类...变型是一种说明两种拥有相同基础类型和不同类型参数型类型之间子类型化关系的方式,它说明了如果其中一个型类型的类型参数是另一个的类型参数的子类型 这个型类型就是另外一个型类型的子类型或者超类型。

1.8K10

Kotlin 的 IDE 插件 2021.1 发布: 性能的提升以及更好的重构支持

体验高效的代码补全和高亮 有时候,代码的编写并不像想象中的有趣,特别是在等待 IDE 缓慢的代码高亮和代码补全的过程当中。我们的目标就是让代码高亮和补全丝般顺滑,让开发者不再为此着急上火。...4、新增对默认参数的支持。 5、修正对反引号的处理(译者注:旧版本的签名修改不识别形如 X-ray 这样用反引号引起来的函数名,而这在 Kotlin 当中是合法的 )。...使用支持参数的代码补全 新版 Kotlin 插件可以支持类型参数的自动补全。而之前,您只能手动输入这些类型参数而无法得到 IDE 的帮助。...代码补全可以在型函数之后提示函数和属性,并在需要的时候补全参数。当您在提示列表当中选择了这样的一个函数,IDE 会在前面的代码中自动添加相应的参数。...Kotlin 的代码结构。

2K30

【Rust 基础篇】在函数和结构体中使用

导言 在 Rust 中,型是一种强大的特性,可以实现在函数和结构体中使用通用的类型参数。通过型,我们可以编写更加灵活和可复用的代码。...本篇博客将详细介绍如何在函数和结构体中使用型,包括型函数的定义、参数的约束以及型结构体的实现。 一、型函数 在 Rust 中,我们可以定义型函数,它可以适用于多种不同类型的参数。...通过使用参数,我们可以编写通用的代码,避免重复编写类似功能的函数。 下面是一个示例,演示了如何定义型函数: fn print(value: T) { println!...由于 print 函数是一个型函数,它可以适用于不同类型的参数参数的约束 有时,我们希望对参数进行约束,以限制可接受的类型。...型广泛应用于以下场景: 容器类型( Vec 和 HashMap):可以在容器中存储和操作各种类型的数据。 数据结构和算法:可以编写通用的数据结构和算法,适用于不同类型的数据。

28930

Kotlin基础之

Kotlin没有任何的通配符类型,它使用声明处变型和类型投影两种方式替代。 通配符 - 使用问号表示的类型参数,表示未知类型的类型约束方法。 首先,先思考为什么Java需要这些难以理解的通配符。...除了out,kotlin提供了一个补充的变型注解:in。让类型参数变为逆变量:只能消费,从不生产。Comparable就是协变量一个很好的例子。...此时安全地定义投影的型,每个型的具体实例都是型的子类型。 为此,Kotlin提供称为星号投影的语法。 对于Foo,T为带有上界TUpper的协变量,Foo等价于Foo。...如果型有多个类型参数,则每个都可以独立投影。比如,如果类型声明为interface Function 型函数 不仅类可以有类型参数,函数也可以有。...String { // 扩展函数 // ... } 调用型函数,在调用的函数名之后指定具体类型参数

94470

Golang 型实现原理

2.型实现原理 2.1 类型参数 型函数 型数据结构 2.2 类型约束 2.3 编译时生成 虚拟方法表 单态化 Go 的实现 3.小结 参考wenxian 型(Generics)是 Go...不再需要为每种数据类型都编写相似的代码,避免违反 DRY 原则(Don’t Repeat Yourself)。 2.型实现原理 Go 语言的型实现采用了一种基于类型参数的方式。...这些类型参数允许你在代码中引用并操作不同的数据类型。 型函数 型函数允许你编写能够处理不同类型的数据的通用函数,而不必为每种类型编写重复的代码。...在函数体内,可以使用 T 来表示参数和返回值的类型。 型数据结构 型也可以用于创建通用的数据结构,型切片、型映射等。这样可以更灵活地处理不同类型的数据。...虚拟方法表 在编译器中实现型的一种方法是使用 Virtual Method Table。 型函数被修改成只接受指针作为参数的方式。然后,这些值被分配到堆上,这些值的指针被传递给型函数

30010

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券