
Kotlin
/
山上一缕烟
这个作者很懒,什么都没留下…
展开
-
【2021-12-22】【Kotlin】Type inference failed. Expected type mismatch: inferred type is HashSet but Set
类似这样的错误提示:Type inference failed. Expected type mismatch: Inferred type is HashSet<String>? but Set<String> was expected.是不是一眼看上去,以为是语言有问题,无法使用父类型代表若干个可能的子类型,进而无法针对抽象编程?如果这么想就错了。实际上,也可以是可空类型与不可空类型不匹配。例如,此处要求非可空类型,但传回的是可空类型。要把“?”符号看清楚,不要看漏。.原创 2021-12-22 10:23:14 · 2118 阅读 · 0 评论 -
【2021-12-18】type ‘androidx.navigation.safeargs.gradle.ArgumentsGenerationTask‘ property ‘application
Some problems were found with the configuration of task ‘:app:generateSafeArgsDebug’ (type ‘ArgumentsGenerationTask’).In plugin ‘androidx.navigation.safeargs.kotlin’ type ‘androidx.navigation.safeargs.gradle.ArgumentsGenerationTask’ property ‘application原创 2021-12-18 14:13:10 · 2302 阅读 · 0 评论 -
【2021-12-18】java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.R
java.lang.reflect.InaccessibleObjectException: Unable to make protected void java.util.ResourceBundle.setParent(java.util.ResourceBundle) accessible: module java.base does not “opens java.util” to unnamed module @a38d7a3在项目级的 build.gradle 的 buildscript 的原创 2021-12-18 13:14:06 · 5155 阅读 · 0 评论 -
【2021-12-18】Could not initialize class org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel 解决办法
在项目级的 build.gradle 的 buildscript 的 dependencies 中,补充 如下的 classpath:classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"即:较新版本的 kotlin-gradle-plugin。原创 2021-12-18 12:10:55 · 6797 阅读 · 0 评论 -
【Java / Kotlin】Warning:Leaking ‘this‘ in constructor of non-final class
在构造函数(注意:init 块和给成员变量(属性)赋初值的语句,都是构造函数的一部分)中使用 this 时,可能会出现这个警告。如果不理会,可能导致访问到未初始化的成员变量。Java 中,它们可以是未赋初值或赋值为 null 的引用类型;Kotlin 中,可以是 lateinit var 或未赋值或赋值为 null 的可空类型。事实上,在构造函数中使用 this,即便这个类是 final 的(Kotlin 中则为没有 open 修饰的类),也有可能导致这样的后果。这主要发生在将 this 作为参数(实参)原创 2021-12-14 21:23:04 · 3733 阅读 · 0 评论 -
【2021-12-10】【Android】【血妈坑】百度地图 无法显示完整地图 可能是指定了错误的坐标(经纬度写反了)
LatLng(v: Double, v1: Double)的第一个参数是纬度(Latitude),第二个参数是经度(Longitude)。如果采用百度地图的坐标拾取系统取得指定地点的坐标,给出来的经纬度是反的,如果直接复制到 LatLng 的构造函数里,会出问题。...原创 2021-12-10 14:44:06 · 1269 阅读 · 0 评论 -
【2021-11-24】【Kotlin】Scope Functions:let、with、run、apply、also 的区别;关于 receiver 的一些解释说明:receiver 到底是什么?
Kotlin 的这几个语法糖的用法都是比较相似的:letThe context object is available as an argument (it). The return value is the lambda result.val str: String? = "Hello" //processNonNullString(str) // compilation error: str can be nullval length = str?.let { pri原创 2021-11-24 11:45:30 · 1163 阅读 · 0 评论 -
【2021-11-21】【Kotlin】表达式同时包含算术与移位运算(shl / shr / ushr)时,注意运算符的优先级。
如when (((if (v[1] != null) 1 else 0) shl 1) + (if (v[0] != null) 1 else 0)) { //...}不难看出,语句((if (v[1] != null) 1 else 0) shl 1) + (if (v[0] != null) 1 else 0)产生一个 2 位的二进制数,从右数第 0 位和第 1 位的值分别由变量 d[0] 或 d[1] 是否为空来决定。根据这个值跳转到不同的分支。这样的技巧在编程中并不少见。然而,如果原创 2021-11-21 22:04:47 · 1893 阅读 · 0 评论 -
【2021-11-21】【Java / Kotlin】Iterable<E>.iterator().next() 总是停在首个元素的原因与解决办法
调用 Iterable 及其子类的 iterator() 方法时,返回的是一个新的迭代器。所以,如果错用Iterable<E>.iterator().next()进行单向遍历,则迭代器无法移动,这是因为:实际上,每次调用此方法,都获取了一个新的迭代器。这个新迭代器总是指向 Iterable 的第一个元素。解决办法是:使用一个变量引用获得迭代器,并调用其 next() 方法。...原创 2021-11-21 21:53:25 · 2112 阅读 · 0 评论 -
【2021-11-20】Random, ThreadLocalRandom, SecureRandom 生成随机序列时 OutOfMemoryError: Java heap space 的一种情况
最近在做期末作业,给一个类写测试,跑的时候总是提示java.lang.OutOfMemoryError: Java heap space把测试数据的规模缩小到只有原来的几十分之一以后,问题依旧。按照 Stack Trace 定位出错的语句,发现有时是在一个简单的插入条目到某个数据结构的语句那里爆堆,有时则是在生成随机数的时候就爆堆。后来惊奇地发现:产生 IntStream / LongStream 的时候,忘记填入随机数的个数,也就是ints(long streamSize, int random原创 2021-11-20 14:37:38 · 477 阅读 · 0 评论 -
【2021-11-20】Android Gradle Build Failed: Unsupported class file major version 61 的解决办法
猜测是因为给 Gradle 指定了一个较高版本的 JDK(如,最近刚刚正式发布的 Java 17 LTS),导致无法支持某些项目的构建。依次选择File → Settings → Build, Execution, Deployment → Build Tools → Gradle将 Gradle JDK 改为Embedded JDK version 11.0.10然后确定,再重新构建项目。...原创 2021-11-19 11:44:28 · 17715 阅读 · 0 评论 -
【2021-11-19】Android Gradle Build Failed 你的主机中的软件中止了一个已建立的连接 / 远程主机强迫关闭了一个现有的连接 且无法更改 Gradle 版本 的解决方法
如果软件使用的 Gradle 及其插件的版本较旧(如,Android Gradle Plugin 3.5.0 + Gradle 6.8),则存在此 bug。关闭 Wi-Fi 热点及其它网络共享,再将项目 Build 一次。升级到较新的 Gradle(如,Android Gradle Plugin 7.0.3 + Gradle 7.3)可以解决本问题。但是,由于 Android Studio 的 bug 比较多,可能在第一次成功构建项目之前,都不能在 Project Structures 中更改 Grad原创 2021-11-19 11:34:28 · 2092 阅读 · 0 评论 -
【2021-11-14】Android Studio 总是报错 Unresolved Class ‘MainActivity‘ 的解决办法
在 MainActivity 类对应的源文件 MainActivity.java 或 MainActivity.kt 开头,不要漏掉 package 语句。例如:package com.example.myfirstapplication如果是将别处的代码整段复制粘贴,替换了 MainActivity.java 或 MainActivity.kt 的全部原有内容,易出现此情形。...原创 2021-11-14 10:44:04 · 16289 阅读 · 2 评论 -
【2021-10-24】Activity 的 onCreateOptionsMenu 不在加载的布局中显示菜单的一种情况:Android 版本过低
打开app\src\main\res\values\themes.xml可以看到类似这样的内容:<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Theme.ActivityTest" parent="Theme.MaterialComponents.DayNight.DarkActionBar">原创 2021-10-24 21:57:56 · 589 阅读 · 0 评论