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

Kotlin】扩展函数 ② ( 扩展属性 | 类型定义扩展函数 | 使用 infix 关键字修饰单个参数扩展函数的简略写法 )

文章目录 一、扩展属性 二、类扩展 三、使用 infix 关键字修饰单个参数扩展函数的简略写法 一、扩展属性 ---- 上一篇博客 【Kotlin】扩展函数 ( 扩展函数简介 | Any 超类定义扩展函数...---- 之前讲的定义扩展函数 , 扩展属性 , 都是类型 定义的 , 如果要为 类型 定义扩展函数 , 则需要在 扩展函数 中 处理时 , 要多考虑一层 接收者 this 的 情况...; 注意下面的调用细节 : 如果定义的 扩展函数 是 类型定义的 , 类型变量 想要调用该 扩展函数 , 调用时使用 " ?....非类型扩展函数 如果定义的 扩展函数 是 类型定义的 , 类型变量 想要调用该 扩展函数 , 调用时直接使用 " . " 进行调用即可 ; 类型实例对象.类型扩展函数 代码示例...123abc this = null, string = abc, 接收者 abc 三、使用 infix 关键字修饰单个参数扩展函数的简略写法 ---- 如果 扩展函数 只有 一个参数 , 并且

1.9K30

Spring认证中国教育管理中心-Spring Data R2DBC框架教程七

本综合教程将教您如何使用start.spring.io使用 Kotlin 构建 Spring Boot 应用程序。...这通过空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为值的函数式构造。请参阅Kotlin 值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 空性注释的支持Kotlin 开发人员提供了整个 Spring Data API 的安全,具有null在编译时处理相关问题的优势。...请参阅存储库方法的空处理如何安全应用于 Spring 数据存储库。...17.4.扩展 Kotlin扩展提供了使用附加功能扩展现有类的能力。Spring Data Kotlin API 使用这些扩展现有的 Spring API 添加新的 Kotlin 特定的便利。

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

Spring注解驱动开发】如何使用@Value注解bean的属性赋值,我们一起吊打面试官!

作者个人研发的高并发场景下,提供的简单、稳定、扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。...写在前面 之前的文章中,我们探讨了如何Spring的IOC容器中注册bean组件,讲解了有关bean组件的生命周期的知识。今天,我们就来一起聊聊@Value注解的用法。...因为Spring执行{}时机要早于#{},当Spring执行外层的{}时,内部的#{},所以会执行失败! @Value注解用法小结: #{…} 用于执行SpEl表达式,并将内容赋值给属性。...那如何向Person对象的name属性和age属性赋值呢?此时,Spring中的@Value注解就派上了用场。 如果我们通过XML文件bean的属性赋值,则可以通过如下配置的方式实现。...我们可以Person类的属性上使用@Value注解属性赋值,如下所示。

3K20

Kotlin的互操作——Kotlin与Java互相调用

[0]//推断平台类型(普通Java对象) 当调用平台类型变量的方法时,Kotlin不会在编译时报告空性错误,但是在运行时调用可能会失败,因为指针异常。...当把一个平台值赋给一个Kotlin变量时,可以依赖类型推断(该变量会具有所推断出的平台类型,如上例中item所具有的类型),或者选择我们所期望的类型(的或非类型均可)。...AllOpen是所标注的类去掉final,目的是为了使该类允许被继承,且支持Spring注解,如@Componet;支持自定义注解类型,如@Poko。...④ 静态方法 Kotlin将包级函数表示静态方法。如果对这些函数使用@JvmStatic进行标注,那么Kotlin还可以为命名对象或伴生对象中定义的函数生成静态方法。...当它作为参数出现时,为了让Kotlin的APIJava中工作,对于协变定义的Box生成Box作为Box(或者对于逆变定义的Foo生成Foo<?

3.8K10

Spring中国教育管理中心-Apache Cassandra 的 Spring 数据教程十四

本综合教程将教您如何使用start.spring.io使用 Kotlin 构建 Spring Boot 应用程序。...这通过空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为值的函数式构造。请参阅Kotlin 值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 空性注释的支持Kotlin 开发人员提供了整个 Spring Data API 的安全,具有null在编译时处理相关问题的优势。...请参阅存储库方法的空处理如何安全应用于 Spring 数据存储库。...15.4.扩展 Kotlin扩展提供了使用附加功能扩展现有类的能力。Spring Data Kotlin API 使用这些扩展现有的 Spring API 添加新的 Kotlin 特定的便利。

1.6K40

java指针报错_指针异常是什么意思

Spring JdbcTemplate 正是使用了这种处理方式: // 当查询结果时,返回 new ArrayList() jdbcTemplate.queryForList("SELECT *...一方面我们无需再引入额外的 Jar 包,更重要的是 Spring Framework 代码本身就使用了这些注解,这样我们调用它的 API 时就能有效地处理值了。...使用了另一种方式,用户定义变量时就需要明确区分 和不可类型。...length // 强制忽略,可能引发值异常 Kotlin 的特性之一是与 Java 的互操作性,但 Kotlin 编译器无法知晓 Java 类型是否,这就需要在 Java 代码中使用注解了,而...Spring Framework 5.0 起原生支持 Kotlin,其值检测也是通过注解进行的,使得 Kotlin 可以安全地调用 Spring Framework 的所有 API。

2.2K30

Spring认证中国教育管理中心-Spring Data MongoDB教程十五

本综合教程将教您如何使用start.spring.io使用 Kotlin 构建 Spring Boot 应用程序。...这通过空性声明和“值或无值”语义的表达使应用程序更安全,而无需支付包装器的成本,例如Optional. (Kotlin 允许使用具有可为值的函数式构造。请参阅Kotlin 值安全性综合指南。)...Kotlin 对 JSR-305 注释和 Spring 空性注释的支持Kotlin 开发人员提供了整个 Spring Data API 的安全,具有null在编译时处理相关问题的优势。...请参阅存储库方法的空处理如何安全应用于 Spring 数据存储库。...20.4.扩展 Kotlin扩展提供了使用附加功能扩展现有类的能力。Spring Data Kotlin API 使用这些扩展现有的 Spring API 添加新的 Kotlin 特定的便利。

2.3K30

Kotlin与Java互操作

item = list[0] // 推断平台类型(普通 Java 对象) 当调用平台类型变量的方法时,Kotlin不会在编译时报告空性错误,但是在运行时调用可能会失败,因为指针异常。...注解 由于泛型的原因,Kotlin在编译时可能出现异常,而使用注解可以有效的解决这一情况。...如果 @Nonnull(when = …) 值 When.ALWAYS,那么该注解类型会被视为非;When.MAYBE 与 When.NEVER 表示类型;而 When.UNKNOWN 强制类型平台类型...@UnderMigration(status = …) 中的状态值指定了编译器如何处理 Kotlin 中注解类型的不当用法(例如,使用 @MyNullable 标注的类型值作为非值): MigrationStatus.STRICT...AllOpen是所标注的类去掉final,目的是为了使该类允许被继承,且支持Spring注解,如@Componet;支持自定义注解类型,如@Poko。

3.4K30

使用 Spring Data Repositories(中)

 package-info.java @org.springframework.lang.NonNullApi package com.acme; 一旦非默认设置到位,存储库查询方法调用将在运行时验证空性约束...基于 Kotlin 的存储库中的空性 Kotlin语言中定义空性约束。Kotlin 代码编译为字节码,它不通过方法签名而是通过编译元数据来表达空性约束。...确保kotlin-reflect您的项目中包含JAR 以启用对 Kotlin空性约束的内省。...Spring Data 存储库使用语言机制来定义这些约束以应用相同的运行时检查,如下所示: 示例 24. Kotlin 存储库上使用空性约束 interface UserRepository : Repository...} 该方法将参数和结果都定义不可为Kotlin 默认值)。Kotlin 编译器拒绝传递null给方法的方法调用。

1.1K30

Spring 5.0.3.RELEASE中的 Kotlin 语言等支持Spring 5.0.3.RELEASE中的 Kotlin 语言支持

Spring Boot,那么 可以使用@ConfigurationProperties 替代@Value注释,但是目前这只能用于var 属性(这远非理想),因为不支持由构造函数初始化的不可变类。...注释阵列属性 Kotlin注释大部分与Java类似,但是Spring中广泛使用的数组属性 - 行为不同。...定义由动态语言支持的bean 本节描述了如何在任何支持的动态语言定义Spring管理豆。 请注意,本章不试图解释的语法和支持的动态语言的成语。...(你当然可以定义这样的豆使用Spring API -尽管你要咨询的源代码就如何做到这一点,因为这类型的方向先进的配置不本章中)。...让我们来看看使用它实现了一个基于BeanShell的bean的工作的完整例子Messenger这是本章(下面重复为了您的方便)早期定义的接口。

7.9K30

Kotlin 1.4 版本正式发布:新功能一覽

此编译器的这一部分也可以 IDE 中使用,来高亮显示语法错误、导航到定义并搜索项目中的符号用法。这是 kotlinc 如今花费最多时间的步骤,因此开发团队希望使其更快。...虽然正逐步迁移到新的后端,可是 1.4 中,默认情况下不太可能启用它们,但用户将能够选择明确使用它们。 通用的后端基础结构跨平台编译器扩展打开了大门。...使用Kotlin 让 Java程序员们的生活变得更好,Java中的那些指针错误,浪费时间的冗长的样板代码,啰嗦的语法限制等等,Kotlin中统统消失。...3.扩展函数 Kotlin 类似于 C# 和 Gosu, 它提供了现有类提供新功能扩展的能力,而不必从该类继承或使用任何类型的设计模式 (如装饰器模式)。...使用 IDEA 的工具转换Java代码 Kotlin 代码时,可以轻松地重用60%-70%的结果代码,而且修改成本很小。

1.2K10

微服务架构之Spring Boot(七十)

如果您只有一个组合两者的模块,请将其命名 acme-spring-boot-starter 。 此外,如果您的启动器提供配置密钥,请它们使用唯一的命名空间。...如果仅使用定义启动程序创建项目,则核心启动程序将支持Spring引导的核心功能。 50....Kotlin还允许使用具有值的功能构造,如本 Kotlin中关于零安全性的综合指南中所 述。...Kotlin对JSR 305注释的支持与空性注释相结合,Kotlin 中相关的Spring API提供了的安全性。...strict 值需要在从Spring API推断的Kotlin类型中考虑安全性,但应该使用Spring API空性声明甚至可以在次要版本和更多检查之间 发展的知识可能会在将来添加)。

88010

是时候使用Kotlin编程了

2,安全性 Kotlin提供了安全符“?”,当变量可以为null时,必须使用安全符?进行声明,否则会出现编译错误。...2,函数定义 函数使用fun关键字进行声明,变量的冒号之后是变量类型,函数的冒号之后是返回值。...新特性 1,安全 Kotlin中,对象声明分为引用和非引用两种。其中非引用的定义如下: 而引用需要使用安全符“?”...,例如: 当调用的时候,也需要使用安全调用操作符,写作 ?. 空调用。例如: 通过函数调用给引用赋值,返回的必须也是引用,这就在编译期间杜绝了指针异常。...类型与不可类型 4.9.2 判操作符 4.9.3 Elvis 操作符 4.9.4 强校验操作符 4.9.5 安全的类型转换 4.9.6 类型集合 4.11异常处理 4.11.1 异常类 4.11.2

3.2K10

Spring认证中国教育管理中心-Spring Data MongoDB教程十三

Kotlin 数据类的属性填充 Kotlin 中,默认情况下所有类都是不可变的,并且需要明确的属性声明来定义可变属性。...如果id Java 类中将命名字段声明为 String 或 BigInteger,则将尽可能将其转换为 ObjectId 并存储 ObjectId。ObjectId 作为字段类型也是有效的。...默认情况下使用配置类包。 特定域类型配置额外的自定义转换器,用您的自定义实现替换这些类型的默认映射过程。...我们通常建议基于应用程序的索引控制显式创建索引,因为 Spring Data 无法应用程序运行时重新创建的集合自动创建索引。...@Indexed: 应用于字段级别,描述如何索引字段。 @CompoundIndex (重复):类型级别应用以声明复合索引。

2.8K20

Spring Data JPA 参考文档二

package-info.java @org.springframework.lang.NonNullApi package com.acme; 一旦非默认设置到位,存储库查询方法调用将在运行时验证空性约束...基于 Kotlin 的存储库中的空性 Kotlin语言中定义空性约束。Kotlin 代码编译为字节码,它不通过方法签名而是通过编译元数据来表达空性约束。...确保kotlin-reflect您的项目中包含JAR 以启用对 Kotlin空性约束的内省。...Spring Data 存储库使用语言机制来定义这些约束以应用相同的运行时检查,如下所示: 示例 22. Kotlin 存储库上使用空性约束 interface UserRepository : Repository...} 该方法将参数和结果都定义不可为Kotlin 默认值)。Kotlin 编译器拒绝传递null给方法的方法调用。

1.1K30

Spring Boot 与 Kotlin 使用Redis数据库

使用Redis Redis是一个开源的使用 ANSI C语言编写、支持网络、基于内存亦可持久化的日志型、 Key-Value数据库。...: 192.168.1.29 port: 6379 其中spring.redis.database的配置通常使用0即可,Redis配置的时候可以设置数据库数量,默认为16,可以理解数据库的schema...# Redis服务器连接端口 password: 123456 # Redis服务器连接密码(默认为) pool: max-active: 8 # 连接池最大连接数(使用负值表示没有限制...: Serializable 测试访问 通过编写测试用例,举例说明如何访问Redis。...中提供的数据操作远不止这些,本文仅作为Spring Boot中使用redis时的配置参考,更多对于redis的操作使用,请参考 Spring Data Redis Reference 。

1.6K20

不要用Java的语法思维来写Kotlin

,这会返回一个非的 a 值 (例如:我们例子中的 String)或者如果 a ,就会抛出一个 指针 异常: val b = a!!.length 所以,我们能不用 !!操作符就不要用。。。...依赖倒转,对象的创建是通过spring完成的,而val要求定义的时候初始化 /** * Created by quanke on 2018/1/9....对于基础数据类型,我们可以这样: private var mNumber: Int by Delegates.notNull() 3).Elvis 操作符 当b引用时,我们可以使用if表达式处理...is声明属性的同一模块中执行; 不适用于open的属性,或者具有自定义getter的属性! var局部变量—适用于变量类型检查和使用之间没有修改,且不在修改它的lambda中捕获!...var属性-不适用(因为该变量可随时被修改) 安全()转换-操作符as避免抛出异常,可用安全转换操作符 as?,失败时返回null val a: String? = b as?

3K40

写了多年的Java,直到看到Kotlin,原来代码可以如此优雅!

,这会返回一个非的 a 值 (例如:我们例子中的 String)或者如果 a ,就会抛出一个 指针 异常: val b = a!!.length 所以,我们能不用 !!...依赖倒转,对象的创建是通过spring完成的,而val要求定义的时候初始化 @RunWith(SpringRunner::class) @SpringBootTest(webEnvironment =...对于基础数据类型,我们可以这样: private var mNumber: Int by Delegates.notNull() 3).Elvis 操作符 当b引用时,我们可以使用if...is声明属性的同一模块中执行; 不适用于open的属性,或者具有自定义getter的属性! var局部变量—适用于变量类型检查和使用之间没有修改,且不在修改它的lambda中捕获!...var属性-不适用(因为该变量可随时被修改) 安全()转换-操作符as? 避免抛出异常,可用安全转换操作符 as? ,失败时返回null val a: String? = b as?

3.3K40

【翻译】Kotlin致简代码之路

不可变引用 Kotlin 中,我们应该一直使用 val 关键字来定义一个变量。这会创建一个不可变变量。 Java 中,我们不得不额外添加 final 这个关键字(再次出现语法噪点!)。...而其他的属性复制过程中将会保持不变。...辛运的是, Kotlin 有着强大的处理 null 指针的能力。让我们一起来看看吧。 类型和非类型 这个 null 安全体系也是 Kotlin 的另一个杀手级特性。...其次,我们可以将一个类型标记为类型( 可以取值 null )或者非类型(不能为 null )。一个类型相对于它所对应的非类型提供了不同的方法,这都是编译器能检测到的。...不可以把变量赋值给非变量 要把一个变量值赋值给非值变量我们必须做一个 null 检测: val value: String = if (nullableValue == null) "default

1.4K30
领券