Tag: 科特林

将kotlin代码编译为JVM和JavaScript

我真的很喜欢编写一个框架的想法,然后能够将其编译为jvm字节代码以及用于Web的JavaScript使用。 这是目前可能与kotlin编译器?

未连接到Internet时发生致命exception

我正在努力学习Kotlin和rxjava 。 我有一个非常简单的应用程序,只需点击一个button ,即可从网站获取一些数据。 一切工作正常,除非我关闭我的手机数据,在这种情况下,我得到一个致命的例外,没有解释为什么。 我的代码: // In the activity’s onCreate ViewObservable.clicks(button) .observeOn(Schedulers.io()) .subscribe{ fetchTest().observeOn(AndroidSchedulers.mainThread()) .subscribe{ s:String -> textView.text = s } } // Elsewhere in the activity code @Throws(IOException::class) private fun fetchTest(): Observable { val url = URL(MY_URL) val httpConnection = url.openConnection() var stream = httpConnection.inputStream val reader = BufferedReader(InputStreamReader(stream)) val response = reader.readLines().reduce […]

Kotlinreflection – 获取一个类的所有字段名称

我怎样才能得到一个Kotlin数据类的declaredFields它的declaredFields ? 像Java的getDeclaredFields() 如果这是可能的,是否也可以过滤public和private领域? (像Java的Modifier.isPrivate(field.getModifiers()) )

Kotlin代码如何在Android应用程序中执行,与Java有什么不同?

我正在学习Kotlin,并希望了解编译后的代码是如何执行的,这与Java代码执行Android有什么不同。 我也想知道为什么我们编写MainActivity::class.java ( class.java )来引用类文件。 谢谢!

Java类名中的Kotlin中的静态常量

我通常在Java中有这个: package some.package; public class Clz { public static final String ACTION_DIVE = Clz.class.getName() + “.action.DIVE”; } 可以从Clz.ACTION_DIVE以外的类访问,值为”some.package.Clz.action.DIVE” 。 我怎么能在Kotlin class Clz做同样的Clz以便可以从外部的Java类以相同的方式访问它? 我尝试了以下,但它不编译,因为它不是一个常量: package some.package object Clz { const val ACTION_DIVE = Clz.javaClass.name + “.action.DIVE” }

Kotlin访问Java类

为什么在Kotlin中,你需要访问它们使用的对象的Java类 MyActivity::class.java 我被告知与Kotlin与JS的互操作性…有什么想法?

Kotlin:unit testing期间@JvmStatic方法NoClassDefFoundError / ClassNotFoundException

这是我试图从我的unit testing调用的类 package bj.discogsbrowser.artistreleases class ArtistResultFactory { companion object { @JvmStatic fun buildArtistResult(members: Int): ArtistResult { val artistResult = ArtistResult() artistResult.nameVariations = listOf(“ye”) artistResult.dataQuality = “really good quality, we have the best qualities” return artistResult } } } 这是测试的样子: @Test fun setArtistNoMembers_displaysNoMembers() { controller.setArtist(ArtistResultFactory.buildArtistResult(0)) … assertEquals(copyOfModels.size, 8) } Java中的相同测试(也失败了): @Test public void setArtistNoMembers_displaysNoMembers() { controller.setArtist(ArtistResultFactory.buildArtistResult(0)); […]

无法使用kotlinx.serialization将Json解析为数据类

在Android项目中,我试图使用kotlinx.serialization和Retrofit从远程端点解析Json响应。 我在使用Jake Warthon的https://github.com/JakeWharton/retrofit2-kotlinx-serialization-converter来设置转换器时设置改造实例 Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(stringBased(contentType, ::parse, ::stringify)) .addCallAdapterFactory(CoroutineCallAdapterFactory()) .build() 我有以下模型注解@Serializable,我想用来解析Json响应 import kotlinx.serialization.Serializable @Serializable data class Response(val groups: List<GroupsResponse>) 请注意,Response和嵌套的GroupsResponse都定义了一个通用types。 我一直在浏览文档,但是我一直无法理解generics和kotlinx.serialization是如何一起玩的,尽管它提到它支持generics,并且您应该使用生成的序列化方法访问那些模型的序列化程序 。 我已经建立了项目使用正确的插件按照kotlinx.serialization和Jake的库的文档,但问题是,该项目甚至不编译,因为我正在得到以下types的错误,当构建过程执行kaptDebugKotlin gradle任务 e: /Users/nico/Dev/git/edreams/workshops/K-Places/data/build/tmp/kapt3/stubs/debug/com/edreams/android/workshops/kotlin/data/venues/remote/response/Response.java:75: error: non-static type variable T cannot be referenced from a static context public static final class $serializer implements kotlinx.serialization.KSerializer<com.edreams.android.workshops.kotlin.data.venues.remote.response.Response> { e: /Users/nico/Dev/git/edreams/workshops/K-Places/data/build/tmp/kapt3/stubs/debug/com/edreams/android/workshops/kotlin/data/venues/remote/response/GroupsResponse.java:109: error: cannot find symbol kotlinx.serialization.KSerializer typeSerial0) { […]

如何在Kotlin中初始化一个数组?

在Java中,可以初始化一个数组,例如: int numbers[] = new int[] {10, 20, 30, 40, 50} Kotlin的数组初始化是怎样的?

在比较中无视Triple的组件

我试图比较Triple的同时无视Triple的某些价值。 我希望忽略的价值由_表示。 请注意,下面的代码是出于示例目的,并不编译,因为_是Unresolved reference 。 val coordinates = Triple(3, 2, 5) when (coordinates) { Triple(0, 0, 0) -> println(“Origin”) Triple(_, 0, 0)-> println(“On the x-axis.”) Triple(0, _, 0)-> println(“On the y-axis.”) Triple(0, 0, _)-> println(“On the z-axis.”) else-> println(“Somewhere in space”) } 我知道你可以使用_ 解构时,如果你想忽略一个值,但似乎并没有帮助我解决上述问题: val (x4, y4, _) = coordinates println(x4) println(y4) 任何想法我可以如何实现这一目标? 谢谢!