我是JVM的新手,有兴趣尝试Kotlin进行REST风格的Web开发。 热重新加载是我习惯于从Python,Ruby和JavaScript等动态脚本语言开发的function。 玩,Dropwizard和Spring Boot都显得有吸引力。 我会愿意使用上述任何一种,但是我一直无法得到一个简单的“保存文件,重新加载网页”的工作流与任何上述设置。 这怎么能做到呢?
我正在处理自定义视图TreeView ,它将显示给定根节点的树。 我正在使用Kotlin语言。 以下是目前的部分内容: override fun onDraw(canvas: Canvas?) { super.onDraw(canvas) drawNodeAndChildren(canvas, rootNode) } /** * Draws a representation of a node and its children onto the canvas. * … */ private fun drawNodeAndChildren(canvas: Canvas, node: TreeNode, …): Int { … // Calculate coordinates of rect val top = … val bottom = … val left […]
下面这个稍微过时的教程 ,我卡住试图使用org.jetbrains.anko.design.floatingActionButton 。 错误是: 无法访问类“android.support.design.widget.FloatingActionButton”。 检查您的模块类路径是否存在缺失或冲突的依赖关系。 build.gradle(Project) buildscript { ext.kotlin_version = ‘1.1.50’ ext.anko_version = ‘0.10.1’ repositories { google() jcenter() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-beta6’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } build.gradle(App) apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-android-extensions’ android { […]
我有以下的SSCCE: class Foo(val bars: Map<Int, Bar>) { fun qux(baz: Baz) { val bar2 = bars[2]!! bar2.bazes += baz } interface Bar { var bazes: MutableList } } 这对我来说似乎很好,但编译器抱怨: Error:(5, 9) Kotlin: Setter for ‘bazes’ is removed by type projection 我不知道这意味着什么,更不用说如何纠正它。 这里发生了什么,如何解决这个问题?
我使用RxJava2,Kotlin和Room作为例子。 以下是将我的项目填充到recyclerView的适配器: class ShoppingListDetailsAdapter(val list: ArrayList, val context: Context, val listener: ShoppingItemCheckboxListener, val isArchived: Boolean) : RecyclerView.Adapter() { override fun getItemCount(): Int { return list.count() } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { val itemView = LayoutInflater.from(parent?.getContext()) .inflate(R.layout.item_shopping_list_element, parent, false) return ViewHolder(itemView) } override fun onBindViewHolder(holder: ViewHolder?, position: Int) { val item = list.get(position) […]
我一直在试图find一个解释,为什么这在kotlin工程: (1..100).map { launch { System.out.println(“Hello from on ${Thread.currentThread().name}”) delay(100) } }.forEach { it.join() } 在Java中,这将: 开始线程1 加入线程1 – 在这里阻塞,永远不会启动超过1个线程。 在kotlin这个进程并行的multithreading。 为什么这个工作?
我想要使用kotlin本地步骤定义, 如 : package cucumber.runtime.kotlin.test; … class LambdaStepdefs : En { init { Before { scenario: Scenario -> assertNotSame(this, lastInstance) lastInstance = this } Given(“^this data table:$”) { peopleTable: DataTable -> val people = peopleTable.asList(Person::class.java) assertEquals(“Aslak”, people[0].first) assertEquals(“Hellesøy”, people[0].last) } 凡Givenfunction,而不是一个注释。 我不想使用像@Given(“blabla”) void blabla() { … }的Java风格@Given(“blabla”) void blabla() { … } 。 我试图从示例中导入包: package […]
我试图创建一个可以被多个类使用的单个数据库实例(在Kotlin中使用object关键字)。 但是,我希望能够在创建单例实例之前指定数据库名称。 由于单例对象不能用参数初始化,所以我想知道我在做什么是有效的,或者是否有更好的方法来做事情: object DatabaseSingleton { private lateinit var databaseName: String private lateinit var mongoClient: MongoClient val database: DatabaseContainer by lazy { DatabaseContainer(databaseName, mongoClient) } fun init(databaseName: String, mongoClient: MongoClient): DatabaseSingleton { this.databaseName = databaseName this.mongoClient = mongoClient return this } } 并在另一个文件 class DatabaseContainer(databaseName: String, val mongoClient: MongoClient) { val db: MongoDatabase = mongoClient.getDatabase(databaseName) […]
我想在我的Windows 7 64位机器上的Android Studio 3.0 Canary 5(171.4141229)中创建一个Kotlin项目。 但是,当我启动一个新项目时,向导的第一个窗口不显示“包括Kotlin支持”checkbox(它也不显示“包括C ++支持”checkbox)。 它看起来像这样: 我能做些什么来创建Android Studio 3.0 Canary 5中的Kotlin项目? 所有的教程(使用加那利1)说,这个checkbox应该在那里。
Kotlin中是否有任何特定的语言实现与其他语言的协同程序有所不同? 这意味着协程就像轻量级的线程? 有什么不同? kotlin的协同程序是否并行/同时运行? 即使在多核系统中,在任何给定的时间只有一个协程运行(是不是?) 这里我开始了100000个协程,这个代码背后发生了什么? for(i in 0..100000){ async(CommonPool){ //run long running operations } }