我想从Java转换下面的代码: Object from = … Class toClass = … T result = toClass.cast(from); 到Kotlin: Any? from = … KClass toClass = … T result = // toClass.cast(from) – how to convert this line to Kotlin? 怎么做?
我使用Kotlin和Jongo来访问MongoDB。 Jongo使用Jackson来序列化/反序列化对象,以便从MongoDB保存和读取它们。 我使用Jackson-Kotlin模块来帮助使用构造函数序列化Kotlin数据类。 下面是一个序列化好的数据类的例子: data class Workflow ( @field:[MongoId MongoObjectId] @param:MongoId var id: String? = null, val name: String, val states: Map ) 下面是一个不能反序列化的类的例子: data class Session ( @field:[MongoObjectId MongoId] @param:MongoId var id: String? = null, var status: CallStatus, var currentState: String, var context: MutableMap, val events: MutableMap ) Jongo抛出了以下例外,因为Jackson的反序列化失败了: org.jongo.marshall.MarshallingException: Unable to unmarshall result […]
我正在学习Kotlin,看起来很可能我想在明年内把它当作我的主要语言。 然而,我一直在收到相互矛盾的研究,Kotlin是否有不可变的集合,我试图弄清楚是否需要使用Google Guava。 有人可以给我一些指导呢? 默认情况下使用Immutable集合吗? 什么操作符返回可变或不可变集合? 如果没有,是否有计划实施它们?
函数toArray应该将types清除的列表转换为现在是Array T inline fun toArray(list: List): T { return list.toTypedArray() as T } toArray<Array>(listOf(“a”, “b”, “c”)) // should be arrayOf(“a”, “b”, “c”) 但是, toArray会抛出这个错误。 java.lang.ClassCastException:[Ljava.lang.Object; 不能转换为[Ljava.lang.String; 你有什么想法?
我想知道我应该如何实现一个ListAdapter加载其视图异步到一个ListView ? 我想这样做是因为我用来自我的数据库的信息来填充列表,这使得我的活动时间有点慢。
我知道在Kotlin中使用扩展函数来扩展类的function(例如,来自库或API)。 但是,通过使用扩展function,在代码可读性/结构方面是否有任何优势: class Foo { … } fun Foo.bar() { // Some stuff } 与成员职能相反: class Foo { … fun bar() { // Some stuff } } ? 有推荐的做法吗?
Kotlin带有许多标准的库函数,其中很多默认情况下是可见的,而实际上并没有导入它们。 所以像listOf , arrayListOf , ArrayList()等函数事实上被插入到全局名称空间中。 有一个编译器标志,将禁用此行为?
我期待着这一点 val string = “hello , world” val regex = Regex(“””(\s+)[,]”””) println(string.replace(regex, “”)) 导致这样的结果: hello, world 相反,它打印这个: hello world 我看到replacefunction关心整个比赛。 有没有办法只更换第一组而不是第0组?
在开始Android Studio 3测试版2我得到这个消息: “kotlin-stdlib-1.1.4-2”库中的Kotlin运行时版本是1.1.4-2,而插件版本是1.1.4-release-Studio3.0-3。运行时库应该被更新以避免兼容性问题。” 在buildscript (项目级gradle)中,我已经将ext.kotlin_version = ‘1.1.4-2’改为ext.kotlin_version = ‘1.1.4-3’ 我尝试重建和清理项目,但没有任何作品,我仍然开始得到这个消息。 Gradle项目级别: buildscript { ext.kotlin_version = ‘1.1.4-3’ ext.app_compat_version = ‘26.0.1’ ext.google_play_services = ‘11.2.0’ ext.firebase_ui_version = ‘2.1.1’ ext.retrofit_version = ‘2.3.0’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-beta3’ // update kotlin to 1.1.4-2 classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” // NOTE: Do not place your application dependencies here; they […]
Kotlin有一个noarg编译器插件 ,可以用来为特殊注释类生成合成的无参数构造函数。 文档页面清楚地解释了如何在Maven和Gradle中使用它,但是不清楚它是否可以使用,或者如何使用它,无论是从Ant还是在命令行中使用kotlinc 。 到目前为止,我一直无法做到这一点。 这是我的NoArgs.kt源文件: package test annotation class NoArgs @NoArgs data class Test(val x: String, val y: String) 以下是我尝试过的一些命令行,根本没有任何作用: $ kotlinc -verbose “-Xplugin:$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 和: $ kotlinc -verbose “-Xplugin=$KOTLIN_HOME/lib/kotlin-annotation-processing.jar;$KOTLIN_HOME/lib/noarg-compiler-plugin.jar;$JRE_HOME/lib/tools.jar” -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 当我运行$ javap test.Test ,没有生成无参数构造函数的证据。 还有一些证据表明,插件并没有运行,事实上,如果我把垃圾,而不是-P选项的单词注释 ,没有错误信息或行为改变。 如果你能告诉我如何使用kotlinc或Ant来运行它,我真的很感激它!