Kotlin – 间歇性的“错误的类文件”错误

从今天开始,当我尝试构建我的Kotlin Android应用程序时,在我的Gradle构建中遇到了以下错误: Error:cannot access Baz bad class file: /Users/me/projects/site/android/app/build/tmp/kapt/debug/classFileStubs/com/company/foo/Bar$Baz.class bad RuntimeInvisibleParameterAnnotations attribute: Baz(FragmentManager) Please remove or make sure it appears in the correct subdirectory of the classpath. 它指向一个扩展android.support.v4.app.FragmentStatePagerAdapter的内部类Baz。 我可以暂时避开这个错误,通过评论这个类,并在外部类中引用它,并重建。 错误消失了,但显然这个类不再存在,所以其他的东西在运行时中断。 然后,如果我取消注释并构建,它将适用于一些构建。 然后错误回来了。 冲洗并重复。 我想关闭Genymotion模拟器可能会触发它。 任何人遇到这个,或有任何想法? 这是有问题的代码: class Bar : Fragment() { @Inject lateinit var api:ApiRequester var data : ArrayList = ArrayList() override fun onCreateView(inflater: LayoutInflater?, […]

如何获得kotlin匿名类中的父类

我在kotlin的匿名类中创建Intent时遇到了麻烦。 我想在kotlin中重现下面的代码: ModuleDAO.INSTANCE.refresh(new AnswerListener() { @Override public void onAnswerRetrieved() { final Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); startActivity(intent); finish(); } @Override public void onError(int error) { // doesn’t matter } }); 我尝试过,但不起作用: ModuleDAO.refresh(object : AnswerListener { override fun onAnswerRetrieved() { val intent = Intent(SplashScreenActivity::act, MainActivity::class.java) startActivity(intent) } override fun onError(error: Int) { // doesn’t matter […]

variables名称前的Kotlin星号运算符或Kotlin中的Spread运算符

我想知道在Kotlin中variables名称前面的星号是什么。 我在Spring引导Kotlin例子中看到了这个( *args ): @SpringBootApplication open class Application { @Bean open fun init(repository: CustomerRepository) = CommandLineRunner { repository.save(Customer(“Jack”, “Bauer”)) repository.save(Customer(“Chloe”, “O’Brian”)) repository.save(Customer(“Kim”, “Bauer”)) repository.save(Customer(“David”, “Palmer”)) repository.save(Customer(“Michelle”, “Dessler”)) } } fun main(args: Array) { SpringApplication.run(Application::class.java, *args) }

一次性将整个android项目移植到kotlin是否安全?

我们有一个使用android sdk在原生android完全开发的移动项目。 我们希望完全将代码库迁移到kotlin。 所以想知道在移植到Kotlin的时候要记住什么是主要的东西。

Kotlin标准集合库的时间复杂度是否有任何参考?

例如,Scala具有正式的Collections Performance Characteristics页面,它显示像List , Array和ArrayBuffer这样的集合中的apply() (get in Java), insert()和append()方法的时间复杂性。 但是,我无法在Kotlinfind这样的信息。 Kotlin stdlib API页面也没有这样的信息。 更糟糕的是,我没有得到有关List的基本实现的信息(由listOf()创建),例如,除非我深入了解源代码。 那么Kotlin中的List需要O(n)次访问一个元素,并且在O(1)时间附加一个元素? 我在哪里可以find这些信息?

从lambdas或Kotlin返回:“返回”不允许在这里

我正在写函数,它会告诉我,字符串是好的,好意味着字符串中至少有一个字母重复的字符串。 但是我不能从lambda返回,它总是返回false,虽然条件在if语句通过。 有人可以解释我怎么回报? 我试图写回报,但IDEA给了我Kotlin的消息:’返回’是不允许在这里 fun main(args: Array) { println(“sddfsdf”.isNice()) } fun String.isNice(): Boolean { val hasRepeat = { for (i in 0 .. (length – 2)) { if (subSequence(i, i + 2).toSet().size == 1) { true println(subSequence(i, i + 2)) } } false } return hasRepeat() } 输出是: dd false

用gradle kotlin-dsl覆盖spring引导依赖版本

SpringBoot带有很多的依赖和默认版本。 在groovy-gradle中,这样的依赖版本可以被覆盖: ext[‘mockito.version’] = ‘1.7.5’ 但是这不适用于kotlin-dsl。 我试过了: val mockito by extra { “2.12.0” } val mockito.version by extra { “2.12.0” } val `mockito.version` by extra { “2.12.0” } 后两者,不编,第一个,没有做这个工作。 如何在kotlin文件中覆盖版本(我不想创建一个单独的属性文件,如果它是某种可能的话)。

a.run是否和kotlin中的.run一样?

如果一个variables在Kotlin中是空的,我们需要做一个安全调用,或者。 用于显式调用。 当我试图从可变空间variables中使用一些扩展(比如run或let)时,我注意到.run是好的,IDE没有抱怨,通常我会收到一个警告,提醒我这不是一个安全调用。 是否对kotlin中的.run {}和.run {}有所影响? 如果我使用.run {},它被认为是无效的安全吗? var a? = “…” a?.run{} a.run{}

Java JNI如何与Kotlin / Native交互来查找对象值?

从JetBrains网站: Kotlin / Native是一种将Kotlin编译为没有任何VM的本机二进制文件的技术。 但是Kotlin如何与JNI进行交互,据我所知,如果一个使用JNI的C / C ++程序想要访问一个Java字段,那么它必须使用GetFieldID函数,但是C程序需要来自描述该对象及其值的JVM的信息。 kotlin / Native如何解决字段的值,如果Kotlin使程序不依赖于VM,它如何获得Java字段的值?

如何使用Kotlin在Android中分享图像?

我想分享一个位于资产文件夹的图像使用’Kotlin’.How我可以实现类似的代码块在android: Intent intent = new Intent(Intent.ACTION_SEND); intent.setType(“image/jpeg”); intent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(intent, “Share Image”));