分类

Kotlin

专注于 Kotlin 编程语言的全面探索,深入解析其现代语法、特性与应用实践。从基础的变量、函数和类设计,到高级主题如协程(Coroutines)、DSL 构建、扩展函数和 Jetpack Compose 集成,提供详尽代码示例和优化技巧。适合初学者快速上手,以及资深开发者提升效率与代码优雅度。通过实际项目案例和常见问题调试,展现 Kotlin 在 Android、多平台开发中的核心优势。呈现更简

共 46 篇文章

Kotlin

Kotin编译报错:compiled with an incompatible version of Kotlin

Kotin编译报错:compiled with an incompatible version of Kotlin先天踩坑圣体,每天都在遇到各种问题。最近引入了一个最新版本的Coil库:结果就编译报错,编译不过去了:Class 'coil.request.Disposable' was compiled with an incompatible version of Kotlin. The bin

1.9k
Kotlin

Kotlin contract 用法及原理

Kotlin contract 用法及原理在阅读Kotlin源码的时候,会发现很多常用方法里都有contract的身影:contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境。1、contract定义Kotlin在1.3版本以实验室功能的方式开始引入contract,截止至当前Kotlin最新版本

1.6k
Kotlin

可变参数展开操作符

可变参数展开操作符1、Java方法传递多个参数使用Java定义的方法如果需要传递多个参数,可以用数组 [] : 或者 ... 传递多个参数此时如果用数组作为参数:前面两个方法都可以调用接受这个数组类型的参数:2、Kotlin方法传递多个参数Kotlin中也有支持多个参数的方法定义,用Kotlin重新实现上面两个方法:使用Array<*>替代Java中的 [] 数组:使用vararg表示可变长参数,

1.5k
在线代码转换:free-converter
Kotlin

在线代码转换:free-converter

在线代码转换:free-converter除了本地查看的方法(Android Studio查看Kotlin对应的Java代码),还推荐一个在线免费的代码转换工具:free-converter。可以实现主流编程语言的相互转换:Kotlin代码转换成Java代码,点击直达:kotlin-to-java-converter。天下没有免费的午餐,每天有API调用上限,代码转换次数完当天就没法用了。

1.5k
Kotlin

kotlin委托代理

kotlin委托代理设计模式中有个委托模式(即代理模式),kotlin中的委托可以通过by关键字实现。1、接口委托如何用Kotlin实现一个接口委托呢?举个例子,有一个接口:普通方式,先实现这个接口:在用代理类封装一下:换成Kotlin,仅需一个by关键字即可:2、属性委托属性委托指的是一个类的某个属性值不是在类中直接进行定义,而是将其托付给一个代理类,从而实现对该类的属性统一管理。3、延迟委托使

1.4k
Kotlin

object关键字原理探究

object关键字原理探究object关键字有下面的三种用法:对象声明伴生对象对象表达式1、对象声明object类可以看成是Java里面的单例模式在Kotlin的便捷实现:从编译的.class文件可以看出来,对象声明的原理实际上是将其转换成了Java的单例模式(饿汉模式):2、伴生对象Kotlin中并没有静态成员的概念,但是我们可以使用伴生对象达到类似的效果:同样,从编译的.class文件可以看出

1.4k
Kotlin

Parcelize:Parcelable 实现生成器

Parcelize:Parcelable 实现生成器Parcelable是安卓开发中常用的序列化方式,之前分享过一个Parcelable序列化插件,方便开发者快速生成代码,提高开发效率。1、Parcelize插件Kotlin官方也推出一个Parcelable自动生成的Gradle插件:Parcelize。1.1、引入插件在项目的build.gradle中添加:id("kotlin-parceliz

2.6k
init 初始化块中无法 return?
Kotlin

init 初始化块中无法 return?

init 初始化块中无法 return?在 Kotlin 类中 , 可以定义 init 初始化块 , 在其中可以为 变量赋值 , 执行一些检查相关的代码 , 该 init 初始化块在 创建类实例对象 时执行 。调用顺序为:主构造函数 -> init -> 次构造函数。而且允许定义多个 init 初始化块,它们将按顺序执行。最近用Kotlin写代码的时候才发现,在init 初始化块中不能直接retu

1.7k
Kotlin

安全调用运算符 ?.

安全调用运算符 ?.Kotlin一大特色就是编译期发现空指针问题,避免了运行时出现NullPointException异常。在Android移动开发中空指针问题及其容易出现,代码仓中到处都是冗杂的判空操作。使用Kotlin可以用安全调用运算符大大简化Java中的繁琐判空操作。1、Kotlin中的安全调用 ?.先举个例子看看Java中的常见判空,一个方法对传入的参数判空,如果不空则执行后面的操作。如

1.7k
Kotlin

Elvis运算符 ?:

Elvis运算符 ?:Java开发中有很多判断操作,比如:参数不空则执行计算,否则参数为空返回其默认值。1、Elvis运算符 ?:Kotlin提供了方便的运算符来简化Java上面场景中的代码:Elvis运算符,?: 1.1、语法Elvis运算符左右两个参数,第一个参数不为null,则整个表达式就是第一个值。如果第一个值为null,则整个表达式的值就是第二个参数。1.2、简化Java中啰嗦的代码就能

1.8k
伴生对象:companion
Kotlin

伴生对象:companion

伴生对象:companionKotlin语言中类不能有静态成员,像Java那样在类中用static关键字修饰的变量。1、伴生对象但是Kotlin提供了伴生对象,这个概念提供类似Java中通过类访问其中静态成员的语法。1.1、定义用companion关键字修饰在类中定义的对象。注意:每个类最多只能定义一个伴生对象1.2、名称①可以给伴生对象指定一个名称伴生对象本质上还是生成一个同名的类,并且用“饿汉

1.7k
对象声明:object
Kotlin

对象声明:object

对象声明:objectKoltin中的object关键字专门用来在定义一个类的同时创建这个类的一个实例。1、对象声明开发中常常需要用到单例,Java有很多方式创建单例,详见单例的五种方式。Kotlin为单例模式提供了语言层面的支持,借助object对象声明可以方便的创建单例。1.1、创建对象声明使用object对象声明将类声明和类实例结合到一起,对象声明定义的类和普通类一样,可以添加方法、字段属性

1.7k
数据类:data class
Kotlin

数据类:data class

数据类:data class在Java中toString()、equals()、hashCode()方法非常熟悉,这是Object基类中的固有方法。重写hashCode()和equals()实现对象之间的比较。toString()方法就更不用说了,如果要打印某个对象,就需要重写toString()再拼凑字符串,很麻烦!1、数据类好在Kotlin总结了很多Java开发中的痛点,不必再重写这些基础方法

1.7k
Kotlin

中缀调用和解构声明

中缀调用和解构声明介绍一个Kotlin中和Pair键值对相关的简洁语法糖,引申出中缀调用和解构声明。学习Kotlin似乎看到Python的身影。1、PairPair键值对是Kotlin标准库中的类,它的对象包含两个值:key和value。关于两个键值对的比较:如果键值对中的这两个值相等,那么键值对相等。2、中缀调用使用mapOf()函数来快速创建Map集合的时候,见过如下的语法,刚接触Kotlin

1.2k
函数
Kotlin

函数

函数Kotlin如何定义一个函数?Kotlin的函数相比Java有哪些新的特性?1、函数定义Kotlin中一个函数的定义由一下几个部分组成:fun 函数名(参数名: 参数类型): 返回类型 {}①fun:函数定义使用关键字②参数:传入函数的参数,需要同时指定参数名和参数类型③返回值:定义返回值类型,如果返回为空可以不写或者使用Unit(相对于Java中的void)Unit.kt定义:例:①无返回值

1.7k