草庐IT

Kotlin-Flow

全部标签

kotlin - 当setter有返回值时,如何使用像obj.value = ""这样的setter?

我有一个androidEditText,我正在设置text属性。通常我会使用:editText.text="Mars"但是setter返回了一个Editable,所以Kotlin似乎试图用一个失败的String替换返回的Editable。所以“解决方法”是:editText.setText("Mars")当使用这种类型的setter时,有没有更漂亮的方法(而不是setText())来设置文本? 最佳答案 在Kotlin中,赋值不是表达式。赋值表达式的实际用例很少,而且往往会降低代码的可读性,更不用说if(a=b)错误,因此它们被排除

android - 指定为非空的参数为空 : method kotlin. jvm.internal.Intrinsics.checkParameterIsNotNull,参数 convertView

在将适配器代码转换为Kotlin后出现此错误:java.lang.IllegalArgumentException:Parameterspecifiedasnon-nullisnull:methodkotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,parameterconvertViewat...MyAdapter.getView(UnknownSource:35)atandroid.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)atan

Kotlin 1.3.11 打破了空安全性?

funhandle():String{null?.let{return"Ololo"}}valresult=handle()result.trim()//kotlin.TypeCastException:nullcannotbecasttonon-nulltypekotlin.CharSequence知道为什么null安全的Kotlin函数返回null吗? 最佳答案 这是引入contracts引起的错误对于Kotlin1.3中的标准函数let、run、apply、also。修复针对的是版本1.3.20。见KT-28061了解详情。

thread-safety - Kotlin: "synchronized"使编译器不确定变量的初始化

让我们想象下一段Kotlin代码通过JDBC连接器对数据库执行一些查询:varresults:ResultSetpreparedStatement.clearParameters()preparedStatement.setInt(1,value1);preparedStatement.setInt(2,value2)results=preparedStatement.executeQuery()while(results.next()){//parseresults}编译没有问题。但是,当我尝试将线程安全添加到对preparedStatement的访问时:varresults:Res

kotlin - 为什么不安全的 .run() 调用在 Kotlin 中的空值上工作正常?

我有以下代码片段:valfoo:String?=nullfoo.run{println("foo")}我这里有一个可以为空的变量foo,它实际上设置为null,然后是一个非安全的.run()调用。当我运行代码片段时,我会打印出foo,尽管run方法是在null上调用的。这是为什么?为什么没有NullPointerException?为什么编译器允许对可选值进行非安全调用?如果我通过println(foo),我会在控制台中得到一个漂亮的null,所以我认为可以安全地假设foo实际上是null。 最佳答案 我相信,有两件事可能会让人感到

kotlin - 扩展方法和扩展属性是不好的做法吗?

所以如果扩展方法和扩展属性真的是静态方法和属性。并且静态方法和属性和方法不是线程安全的,因此应该避免扩展方法和扩展属性是不好的。我们只是被欺骗了,因为我们编写的代码看起来很漂亮或干净,但在性能方面却不是。这是真的吗? 最佳答案 这取决于您如何编写扩展函数/属性。如果他们不编辑或访问共享状态,即如果属性和功能是明确的功能:这绝对不是坏习惯。示例1:funString.countSpaces():Int{returnthis.count{c->c==''}}此函数在多线程环境中完美运行,因为String是不可变的。示例2:datacla

intellij-idea - Kotlin 验证错误 : Uninitialized object exists on backward branch 90

我正在使用Kotlingettingstartedguide首次在IntelliJIDEA上设置Kotlin,配置如下:IntelliJIDEA2017.2.5Build#IC-172.4343.14,builtonSeptember26,2017JRE:1.8.0_152-release-915-b12x86_64JVM:OpenJDK64-BitServerVMbyJetBrainss.r.oMacOSX10.11.6我在一个新的Kotlin项目中创建了一个App.kt文件,代码如下:funmain(args:Array){println("hello")}在通过IDE运行代码时,

java - Kotlin 数据类打包

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭4年前。ImprovethisquestionKotlin引入了数据类的奇妙概念。这些类将派生equals()/hashCode()、toString()、getters()/setters()和>copy()函数基于构造函数中声明的属性:数据类KotlinUser(valname:String,valage:Int)在Java中,这看起来像:publicclassJavaUser{publicJavaUser(Stringname,

Kotlin - Void vs. Unit vs. Nothing

Kotlin有三种性质非常相似的类型:无效单位什么都没有似乎他们犯了JavaScript错误:null未定义void(0)假设他们没有陷入同样的​​错误,他们都是为了什么,他们有什么不同? 最佳答案 Void类型来自Java。您通常不会在Kotlin中使用它,除非您正在使用一些使用它的Java库。Unit类型是您从不返回任何感兴趣的函数的函数返回的内容。这样的功能通常会执行某种副作用。单位类型只有一个可能的值,即theUnitobject.当您在Java中使用void(小写v)时,您在Kotlin中使用Unit作为返回类型。Noth

android - 在 APK META-INF/library_release.kotlin_module 中复制的重复文件

我最近通过JitPack添加了两个Android库,出现如下错误:DuplicatefilescopiedinAPKMETA-INF/library_release.kotlin_module我已清除缓存并尝试使用排除模块excludegroup:'org.jetbrains'和excludegroup:'org.jetbrains.kotlin'但似乎都没有解决问题。有什么方法可以阻止通过JitPack添加kotlinstdlib?奇怪的是,像DbFlow这样的其他库没有这个问题,尽管我没有看到它们的设置有什么特别之处(除了它不是通过JitPack实现的)