我在 这里看到, 在这里和那里引用了KDoc,相当于Kotlin的JavaDoc实用程序。 但是,我找不到有关如何使用它的任何文档,更不用说如何定制它或将其集成到Maven或Gradle中。 我知道Kotlin API文档是使用KDoc生成的,因为页面源代码有以下的HTML注释: 那么,有没有关于如何使用KDoc的文档呢?
一个接口的函数名与属性的getter名有意冲突,但由于意外覆盖问题,它被编译器禁止。 是否有可能指示编译器这是故意的? interface A { fun getFoo() } class B: A { val foo }
我正在开发一个Java项目,在这个项目中,我第一次尝试了Kotlin。 我开始使用Intellij Idea中提供的JavaToKoltin转换器将一些类转换为Kotlin。 其中我的自定义例外现在转换为Kotlin。 但是,这个exception处理不再正确工作了。 如果我在java代码中抛出一个自定义exception(例如MyCustomKotlinException.kt ),那么这个exception不会被捕获(见下面的代码)。 // Example.java package foo import java.util.*; import java.lang.*; import java.io.*; import foo.MyCustomKotlinException; class Example { public static void main (String[] args) { try { // Do some stuff // if Error MyCustomKotlinException e = new MyCustomKotlinException(“Error Message”); throw e; } catch (MyCustomKotlinException e) { // <– THIS PART […]
有一个定义为List值的哈希映射: private var mMap: HashMap<String, List>? = null 有一个函数返回一个哈希映射,但与MutableList的值 fun getDataStatus(response: JSONObject?): HashMap<String, MutableList> { return HashMap<String, MutableList>() } 当将结果传递给期望列表的HashMap时,会出现错误: mMap = getDataStatus(resp) //<== got error 有错误: Error:(81, 35) Type mismatch: inferred type is HashMap<String, MutableList> but HashMap<String, List>? was expected
Jetbrains提供了一些文档,但我找不到如何运行Kotlin的编译类文件。 hello.kt: fun main(args : Array) { println(“Hello, world!”) } 编译: $ kotlinc -out dist -src hello.kt $ ls dist namespace.class $ java dist/namespace Exception in thread “main” java.lang.NoClassDefFoundError: dist/namespace (wrong name: namespace) $ java -jar /usr/local/kotlin/lib/kotlin-runtime.jar Failed to load Main-Class manifest attribute from /usr/local/kotlin/lib/kotlin-runtime.jar 如何运行Kotlin程序?
在Kotlin中编辑不可变List的最好方法是什么? 我知道List实际上并不是不可变的,但是如果我将List传递给一个函数,并且我需要整个列表减去一个元素,那么是否有支持的方法来处理这个问题? 如果我想要一个额外的元素整个列表呢?
我有以下模块: @Module class HomeModule(private val context: Context) { @Provides fun provideContext() = context @Provides fun provideHomeUi(): HomeUi { return HomeUi() } @Provides @Singleton fun provideHomePresenter(homeUi: HomeUi): HomePresenter { return HomePresenter(homeUi) } } HomeUi.kt注入字段 @Inject lateinit var context: Context @Inject lateinit var presenter: HomePresenter 而这个在HomePresenter.kt @Inject lateinit var context: Context 在这里我的Deps组件 @Singleton @Component(modules = arrayOf( NetworkModule::class, […]
当覆盖类委托实现的接口方法时,是否可以从一个覆盖函数中调用通常委派给的类? 与使用inheritance时的super类似。 从文档 : interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b fun main(args: Array) { val b = BaseImpl(10) Derived(b).print() // prints 10 } 请注意,覆盖工作正如您所期望的那样:编译器将使用您的覆盖实现,而不是代理对象中的那些实现。 override fun print() { … } 如何从这个重写的函数中调用BaseImpl print()函数? 用例是我想添加额外的逻辑到这个函数,而重用现有的实现。
我试图在我的手机上运行我的应用程序,但在build时失败,出现以下错误: Execution failed for task ‘:app:transformDexArchiveWithExternalLibsDexMergerForDebug’. java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex 我到目前为止所尝试的,但无济于事: – >清理和重建(重建失败) – >删除./gradle文件和所有项目生成和缓存文件,然后缓存失效 我的项目gradle文件: // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = ‘1.1.51’ repositories { jcenter() google() mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:3.0.0-beta6’ // NOTE: Do not place your application […]
我在我的Android项目中使用Dagger 2,并且在调试时遇到了麻烦。 我知道编译失败,因为我的匕首2设置(之前有过)的错误,但它几乎是不可能的,因为我没有得到一个正确的错误信息告诉我问题在哪里。 我所得到的是显示注释处理失败的消息。 沿着: Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’. > Compilation failed; see the compiler error output for details. Error:(14, 28) error: cannot find symbol class BR Error:(17, 40) error: package com.some.package.databinding does not exist Error:(17, 51) error: cannot find symbol class DaggerSomeComponent … 也许这与我正在使用数据绑定的事实有某种关系! 我使用的是Dagger 2.5,Gradle插件2.1.2和android-apt 1.8。 谢谢你的帮助!