Questions tagged «kotlin»

Kotlin是JetBrains支持的一种开源静态类型编程语言。Kotlin结合了OOP和功能特性,并专注于互操作性,安全性,清晰度和工具支持。它目前针对JVM和JavaScript,并且是Android上官方支持的语言。

2
如何在Kotlin中管理单元测试资源,例如启动/停止数据库连接或嵌入式Elasticsearch服务器?
在我的Kotlin JUnit测试中,我想启动/停止嵌入式服务器并在测试中使用它们。 我尝试@Before在测试类中的方法上使用JUnit批注,它可以正常工作,但这不是正确的行为,因为它运行每个测试用例,而不是运行一次。 因此,我想@BeforeClass在方法上使用批注,但是将其添加到方法中会导致错误,提示它必须在静态方法上。Kotlin似乎没有静态方法。然后,这同样适用于静态变量,因为我需要保留对嵌入式服务器的引用,以便在测试用例中使用。 那么,如何为所有测试用例一次创建一个嵌入式数据库? class MyTest { @Before fun setup() { // works in that it opens the database connection, but is wrong // since this is per test case instead of being shared for all } @BeforeClass fun setupClass() { // what I want to do instead, but …

20
IntelliJ中未解决的Kotlin参考
我从学习Kotlin的教程开始IntelliJ。当我尝试运行示例时,即 fun main(args: Array<String>) { println("lol") } 该消息将使执行暂停。Error:(5, 5) Kotlin: Unresolved reference: println 这是我第一次使用IntelliJ。我也从未从事过任何Java项目,我是否缺少某些东西? 编辑:我已经看到了另一个问题。答案对于我的情况无效。

7
如何在Kotlin中创建一个空数组?
我Array(0, {i -> ""})目前正在使用,我想知道是否有更好的实现,例如Array() 另外,如果使用arrayOfNulls<String>(0) as Array<String>,编译器将警告我该强制转换永远不会成功。但这是内部的默认实现Array(0, {i -> ""})。我想念什么吗?
93 arrays  kotlin 

5
Kotlin支持场有什么用?
作为Java开发人员,后备字段的概念对我来说有点陌生。鉴于: class Sample { var counter = 0 // the initializer value is written directly to the backing field set(value) { if (value >= 0) field = value } } 这个支持领域有什么好处?Kotlin文档说: Kotlin中的类不能具有字段。但是,有时使用自定义访问器时必须有一个后备字段。 为什么?在setter中使用属性名称本身有什么区别,例如* class Sample { var counter = 0 set(value) { if (value >= 0) this.counter = value // …

4
Kotlin:等效于KClass的getClass()
在Java中,我们可以通过getClass()like解析变量的类something.getClass()。在Kotlin中,我知道something.javaClass哪个很好,但我希望能够以KClass类似的方式获得。我已经看过Something::class语法了,但这不是我所需要的。我需要获取变量的KClass。是否存在这样的功能?
92 java  class  kotlin 

9
为什么Kotlin Gradle插件无法使用1.8 Target构建?
我有使用intellij为kotlin 1.2.10配置的最简单的gradle项目。这是我的build.gradle文件: buildscript { ext.kotlin_version = '1.2.10' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } group 'com.ali' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'kotlin' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" testCompile group: 'junit', name: 'junit', version: '4.12' } compileKotlin { kotlinOptions.jvmTarget = …

3
Kotlin:withContext()与异步等待
我一直在阅读kotlin文档,如果我正确理解了两个Kotlin函数,则它们的工作方式如下: withContext(context):切换当前协程的上下文,当执行给定的块时,协程切换回先前的上下文。 async(context):在给定的上下文中启动一个新的协程,如果我们调用.await()返回的Deferred任务,它将暂停正在调用的协程,并在派生的协程内部执行的块返回时恢复。 现在针对以下两个版本code: 版本1: launch(){ block1() val returned = async(context){ block2() }.await() block3() } 版本2: launch(){ block1() val returned = withContext(context){ block2() } block3() } 在这两个版本中,block1(),block3()在默认context(commonpool?)中执行,而block2()在给定上下文中执行。 整体执行与block1()-> block2()-> block3()顺序同步。 我看到的唯一区别是,版本1创建了另一个协程,而版本2在切换上下文时仅执行一个协程。 我的问题是: 是不是总是更好地使用withContext,而不是async-await因为它的功能类似,但不会创建另一个协程。大量的协程,尽管很轻巧,但在苛刻的应用中仍然可能是一个问题。 有没有比这async-await更好的情况了withContext? 更新: Kotlin 1.2.50现在具有可在其中转换的代码检查async(ctx) { }.await() to withContext(ctx) { }。

11
在Kotlin中测试预期的异常
在Java中,程序员可以为JUnit测试用例指定预期的异常,如下所示: @Test(expected = ArithmeticException.class) public void omg() { int blackHole = 1 / 0; } 我将如何在Kotlin中做到这一点?我尝试了两种语法变体,但没有一个起作用: import org.junit.Test // ... @Test(expected = ArithmeticException) fun omg() Please specify constructor invocation; classifier 'ArithmeticException' does not have a companion object @Test(expected = ArithmeticException.class) fun omg() name expected ^ ^ expected ')'

30
在Android Studio 3.2 Canary 16 Kotlin项目上找不到符号DataBindingComponent
我刚刚在启用了Kotlin的Android Studio 3.2 Canary 16上创建了一个新项目。然后,我还启用了数据绑定,但是我收到一条错误消息,提示它找不到DataBindingComponent类。 这是我的项目gradle: // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.2.41' ext.android_plugin_version = '3.2.0-alpha10' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2.0-alpha16' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong …

8
Kotlin-如何正确连接字符串
一个非常基本的问题,在Kotlin中连接字符串的正确方法是什么? 在Java中,您将使用该concat()方法,例如 String a = "Hello "; String b = a.concat("World"); // b = Hello World 该concat()功能不适用于Kotlin。我应该使用+标志吗?
89 string  kotlin 



13
ListAdapter不更新RecyclerView中的项目
我正在使用新的支持库ListAdapter。这是我的适配器代码 class ArtistsAdapter : ListAdapter<Artist, ArtistsAdapter.ViewHolder>(ArtistsDiff()) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { return ViewHolder(parent.inflate(R.layout.item_artist)) } override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bind(getItem(position)) } class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { fun bind(artist: Artist) { itemView.artistDetails.text = artist.artistAlbums .plus(" Albums") .plus(" \u2022 ") .plus(artist.artistTracks) .plus(" Tracks") itemView.artistName.text = …

2
警告“ Kotlin插件版本与库版本不同”(但是!)
我有一个Android Studio项目,其中添加了一个我称为的Java库模块core。我的三个Gradle构建文件如下所示。 项目/ build.gradle buildscript { ext.kotlin_version = '1.2.40' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 核心/ build.gradle apply plugin: 'java-library' apply plugin: 'kotlin' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7" ... …

3
Kotlin中的IntArray与Array <Int>
我不确定在Kotlin中anIntArray和an之间的区别是什么Array&lt;Int&gt;,为什么我不能互换使用它们: 我知道IntArray将int[]定位到时JVM会Array&lt;Int&gt;转化为,但是转化为什么? 另外,您也可以拥有String[]或YourObject[]。为什么Kotlin拥有类型的类,而{primitive}Array几乎所有东西都可以排列成数组,而不仅仅是原语。
88 kotlin 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.