Kotlin允许我们为自己的类型提供预定义的一组操作符的实现。这些操作符具有固定的符号表示(如 + 或 *) 和固定的优先级。为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的参数类 型)提供了一个固定名字的成员函数或扩展函数。重载操作符的函数需
Kotlin 中有两种类型的相等性: — 结构相等(用 equals() 检测); — 引用相等(两个引用指向同一对象)。 结构相等 结构相等由 ==(以及其否定形式 !=)操作判断。按照惯例,像 a == b 这样的表达式会翻译成: a?.equals(b) ?: (b === null) 也就是说如果 a
This表达式 为了表示当前的 接收者 我们使用 this 表达式: — 在类的成员中,this指的是该类的当前对象。 — 在扩展函数或者带有接收者的函数字面值中,this 表示在点左侧传递的 接收者 参数。 如果 this 没有限定符,它指的是最内层的包含它的作用域。要引用其他
val map = HashMap<String, Int>() map[“apple”] = 1 map[“banana”] = 2 // kotlin还提供了一堆mapOf()和mutableMapOf函数简化Map的用法 val map2 = mapOf(“apple” to 1, “banana” to 2) // 我们可以使用for-in遍历map集合 for ((fruit, number) in map2) { } Lambd
StatefulWidget 注:以上两图出自 《Flutter 核心技术与实战 | 陈航》 1.4.2 Layout 只有布局类 Widget 会触发 layout(如 Container、Padding、Align 等)。 每个 RenderObject 节点需要做两件事: 调用自己的 performLayout 来计算 layout 调用 child 的 layout,把 parent 的
dependencies { … implementation ‘cn.jiguang.sdk:jpush:3.3.9’ implementation ‘cn.jiguang.sdk:jcore:2.1.6’ implementation ‘cn.jiguang.sdk.plugin:xiaomi:3.3.9’ implementation ‘cn.jiguang.sdk.plugin:huawei:3.3.9’ implementation ‘cn.jiguang.sd
/** 定义描述一个实体 */ class Student(var name: String, var age: Int, var sex: String) /** List集合 */ fun main(args: Array) { /** 定义一个List集合,存入String字符串类型的数据 */ var list :List = listOf(“李小龙”, “李元霸”, “李连杰”, “李云龙”, “李
密封类用来表示受限的类继承结构:当一个值为有限几种的类型、而不能有任何其他类型时。 说白了就是固定的类继承结构,类似于枚举enum,但是enum只能有一个类型的实例对象。 enum class Day { MON, TEU, WED, THU, FRI, SAT, SUN } 要声明一个密封
item.setOnClickListener { val intent: Intent = Intent(context, BusinessActivity::class.java) context.startActivity(intent) } } fun bindData(seller: Seller) { tvTitle.text = seller.name //图片路径http://127.0.0.1:8090/image?name=takeout/imgs/seller/3.jpg
//支持自定义绘制 DayWidgetBuilder dayWidgetBuilder; //创建日历item WeekBarItemWidgetBuilder weekBarItemWidgetBuilder; //创建顶部的weekbar //构造函数 CalendarController( {int selectMode = Constants.MODE_SINGLE_SELECT, DayWidgetBuilder dayWidgetBuilder = d
println("(intValue + 100) value is ${intValue + 100}") //(intValue + 100) value is 200 如果你需要在原始字符串中表示字面值($)字符(它不支持反斜杠转义),可以用下列语法: val price = “KaTeX parse error: Expected '}', got 'EOF' at end of input: {'’}100.99” print
JNA (Java Native Access) JNA(Java Native Access)是一个改进了JNI的开源(GPL)的Java框架,曾经由SUN公司主导开发的,用于使Java调用原生接口。 使用JNA调用Win32 API 本示例使用Kotlin环境和Gradle(Kotlin DSL)构建 1.添加JNA依赖 在build.gradle.kts中添加 implementation("net.ja
通过 BiometricPrompt API,您可以在加密和不加密的情况下实现身份验证。如果您的应用需要更强安全性的保障 (例如医疗类或银行类应用),则可能需要 将加密密钥同生物特征绑定在一起 来验证用户的身份。否则您仅需向用户提供生物识别身份验证即可。两种方式的代码实现很类似,除
此处有没有一点疑惑,为什么类型推导得出的类型是 () -> Unit ? 此时只要回头看一下Kotlin中函数是如何声明的,就知道为什么了。 为什么这里的函数不是fun开头的 其实这里的函数是匿名函数,上述的写法就是把这个匿名函数赋值给了变量。 可以直接使用变量名进行调用或者使用invok
Kotlin 中有四种可见性修饰符: public:公开,可见性最大,哪里都可以引用。 private:私有,可见性最小,根据声明位置不同可分为类中可见和文件中可见。 protected:保护,相当于 private + 子类可见。 internal:内部,仅对 module 内可见。 相比 Java 少了一个 default 「包内可见」修饰符,多了
private Boolean isDrawTitleBg = false; private Context mContext; // 总的SpanSize private int totalSpanSize; private int mCurrentSpanSize; //… 省略一些方法 @Override public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent,
实现以下两个SensorEventListener方法来监听,并取得感应检测Sensor状态: //在感应检测到Sensor的精密度有变化时被调用到。 public void onAccuracyChanged(Senso sensor,int accuracy); //在感应检测到Sensor的值有变化时会被调用到。 public void onSensorChanged(SensorEven
如图 解决方法: 目前最新 kotlin 版本为 1.6.10 添加 org.jetbrains.kotlin:kotlin-reflect:1.6.10 进编译路径 参考 implementation("org.jetbrains.kotlin:kotlin-reflect:1.6.10")
难道摆脱内卷,只有躺平吗?是否有其他突围的办法?对于我们普通人来说来说,只能通过努力摆脱内卷,逃避,只能缓解一时困惑,无法解决根本问题。 做到专业精深,让自己不可替代 康德说:“人是目的,不是工具。” 想要摆脱内卷,不是把自己当成工具人,沦为商品或者社会中的一个链条,而是把自己当成
使用 equals 方法并没有创建额外的对象,如果遇到需要比较字符串的时候,可以使用这种方法,减少额外的对象创建。 如何优雅的处理空字符串 当字符串为空字符串的时候,返回一个默认值,常见的写法如下所示: val target = “” val name = if (target.isEmpty()) “dhl” else target
asSequence 对提升效率大有裨益,其他的操作就不一一列举了。 / 默认参数 / 重载是很比较常见的操作,但是有时候这种方式会出现很多相同的模板代码。Kotlin的默认参数,可以给参数指定默认值,并且在调用的时候像给变量赋值一样给参数赋值而不用像Java一样非要按照顺序去传值。并
高阶函数 reduce:将所提供的操作应用于集合元素并返回积累的结果 fold和reduce是一样的。 主要的区别是: fold接受一个初始值并将其用作第一步的积累值,而reduce的第一步则将第一个和第二个元素作为第一步的操作参数。 示例: val numberList = listOf(1, 2, 3, 4) var
@Override public void onNext(MovieSubject movieSubject) { mMovieAdapter.setMovies(movieSubject.subjects); mMovieAdapter.notifyDataSetChanged(); } }); 5.加入RxJava的好处: 加入 RxJava 后的网络请求,返回不再是一个 Call ,而是一个 Observable。在Activity / Fragmen
与java不同,kotlin中所有类型转换必须显示调用方法: val e: Int = 10 //val f: Long = e // implicitness not allowed val f: Long = e.toLong() 字符串支持模板变量引用: val j = “I❤️China” println(“Value of String ‘j’ is: $j”) // no need brackets println(“Leng
一、Kotlin学习笔记之字符串大小写转换 1.java中大小写转换为如下方式 String abc = "AbCdEfG"; abc.toUpperCase();//全部转大写 abc.toLowerCase();//全部转小写 2.Kotlin大小写转换如下 var abc = "AbCdEfG" abc.toUpperCase() //java写法 在Studio中会