Kotlin文件无法使用R.java
我在适当的资源文件夹中创建了一个新的布局文件.同步后,当我尝试引用布局文件时,即r.layout.activity_test,r是"未解决的符号".当我尝试在失败时构建时. 有趣的是,如果我手动导入r文件并将其在代码中使用,那么当我尝试在命令行中构建时,它会起作用.另一件事是,当我尝试使用java文件中的R访问布局文件时,也有效.所以我知道正在生成r.java. 我尝试创建一个全新的项目,并且在Kotlin文件中可以访问R. 这里有什么问题? 我尝试过的事情: 清洁然后建造 无效的缓存/重新启动 吹走.gradle文件夹和重新创建索引 其他信息: AS V3.0.1 尝试了Kotlin V1.1.2-4和V1.1.60 gradle v4.2.1 gradle插件v3.0.0 解决方案 无效的caches/重新启动为我工作. Runtime JAR files in the classpath shou
20 2024-04-04
编程技术问答社区
如何在Kotlin生成的Java代码中禁用@NonNull/@Nullable注解
我需要在Kotlin生成的Java代码中禁用@NonNull/@Nullable因为某些注释适配器(代码生成器)无法正确处理某些注释字段 您知道如何完成吗?一些Kotlin注释或编译器指令 问题: Kotlin类: open class TestModel( var test: ByteArray = ByteArray(0) ) 生成的Java: public class TestModel { @org.jetbrains.annotations.NotNull() private byte[] test; @org.jetbrains.annotations.NotNull() public final byte[] getTest() { return null; } public final void setTest(@org.jetbrains.annotations.NotNull() byte[] p0) { } pub
6 2024-02-26
编程技术问答社区
Kotlin项目中使用的传统Java库的空值安全问题
假设我在旧/传统java库中有特定的代码: public class JavaClass { private String notNullString; private String nullableString; private String unannotatedString; public JavaClass(@NotNull String notNullString, @Nullable String nullableString, String unannotatedString) { this.notNullString = notNullString; this.nullableString = nullableString; this.unannotatedString = unannotatedSt
18 2024-02-26
编程技术问答社区
用Kotlin为Android编写一个库,是否有开销?
我正在考虑将Java(Android)库移植到Kotlin.我真的很喜欢Kotlin,对Java的好处应减少库中的错误数量. 由于图书馆针对资源约束环境,因此我担心将库移植到Kotlin,会有额外的开销. Kotlin库(分布式为.class文件)是否引入了任何运行时或额外的开销与Java库? 由于kotlin,所得的Android应用程序会更大或较慢吗? 解决方案 kotlin具有许多优化,可以帮助Android.如果您阅读了博客文章,则可以看到它如何不断地降低stdlib的大小以及每个版本的课程数量. 由于kotlin,所得的Android应用程序会更大或较慢吗? 否 kotlin库(分发为.class文件)是否引入了任何运行时或额外的开销与Java库? 标准库很小,其许多功能仅是内联的,这意味着它们不存在过去的汇编,而只是成为内联代码.前卫也可以照顾很多. 由于图书馆针对一个资源约束环境,我担心将库移植到Kotlin,会有额外
8 2024-02-02
编程技术问答社区
Kotlin dagger 2 Android ViewModel注入错误
我正在尝试在我的Android应用程序上使用匕首2,以从Arch Android库中注入新的ViewModel. 根据我在此样本中看到的@MustBeDocumented @Target(AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER) @Retention(AnnotationRetention.RUNTIME) @MapKey internal annotation class ViewModelKey(val value: KClass) @Module abstract class ViewModelModule { @Binds @IntoMap @ViewModelKey(LoginViewModel::class) internal abst
18 2023-11-19
编程技术问答社区
在Kotlin中,从Java类中继承一个接受保护类的公共方法
我有这种情况: 有一个Java类 public class A { public void overrideMe(B param){ //TODO: override me in Kotlin! } protected static class B { } } 和一个从中继承的Kotlin类,必须覆盖方法" Overrideme" class K: A() { override fun overrideMe(param: B) { println("Wow!") } } 但是Kotlin不允许这种行为. 'public'函数公开其"受保护(在A)"参数类型B 有什么方法可以解决这个问题? P.S.这不仅是综合情况 - 当我尝试实现自定义 spring amqpappender ,为了覆盖它的后processmessagebeforesend方法. 解决方案
32 2023-06-17
编程技术问答社区
在kotlin中比较两个列表
我遇到了kotlin equals et equals equals equals 函数以比较同一类型的两个列表.它适合使用数据类的纯kotlin. I'am使用Kotlin项目中的Java库,其中一个回调方法返回x秒间隔的对象列表.试图将旧列表与每个呼叫的新列表进行比较,但是等于返回false,即使项目相同且相等. val mOldList: MutableList()? = null override fun updatedList(list: MutableList){ // other code if (mOldList.equals(list)) // false everytime } 这是因为Java的等效方法是从库中的吗? 列表比较的替代建议将是令人赞赏的. 解决方案 仅供参考,如果您的自定义对象基于data class,您可以致电list1 == list2无需任何额外的工作(它会自
26 2023-06-06
编程技术问答社区
如何在Kotlin中实现这个Java接口?
由于Kotlin没有原始,如何实现此接口? public interface A { @NotNull Object get(@NotNull Integer i); @NotNull Object get(int i); } 我无法更改Java代码,因为它是二进制库中的集体文件. 解决方案 如果单个实现,如@zsmb13 需要对Kotlin中的两种方法进行单独的实现,然后您可以添加一个中间接口覆盖方法接受Integer的方法: : private interface IntermediateA : A { override fun get(i: Int?): Any } 实现此界面而不是原始A,Kotlin编译器将区分这两种方法,使您可以按以下方式覆盖它们: class C : IntermediateA { override fun get(i: Int) = "primitive" override fun get
42 2023-06-06
编程技术问答社区
从Java中调用Kotlin内联函数
exceptions.kt: @Suppress("NOTHING_TO_INLINE") inline fun generateStyleNotCorrectException(key: String, value: String) = AOPException(key + " = " + value) 在Kotlin: fun inKotlin(key: String, value: String) { throw generateStyleNotCorrectException(key, value) } 它在kotlin中起作用,并且该函数是内衬的. 但是,当在Java代码中使用时,它就无法嵌入 和 still 一个普通的静态方法调用(从分解内容中看到). 类似的东西: public static final void inJava(String key, String value) throws AOPExcepti
66 2023-05-23
编程技术问答社区
Kotlin本机互操作链接器无法找到框架
我正在尝试在Kotlin Multiplatform项目中使用Cocoapods框架. 所以我 将框架添加到PODS文件中. ran pod安装. 创建.def文件 添加cinterop配置在build.gradle 中 ./gradlew cinteropFirebaseIos成功运行.它生成.klib,因此我可以在Kotlin代码中看到类. 但是,当我试图运行iOS应用程序构建时,会出现消息: 显示最新消息 >任务:应用:linkdebugframeworkios ld:找不到框架firebasatedatabase /applications/xcode.app/contents/developer/toolchains/xcodedefault.xctoolchain/usr/bin/ld invocation报告错误 这是我在build.gradle 中的配置 fromPreset(presets.iosX64, '
22 2023-02-25
编程技术问答社区
Kotlin中的Jinq如何将lambda转换为java SerializedLambda?
我可以在科特林有可序列化的lambda吗?我正在尝试使用Kotlin的Jinq库,但它需要可序列化的lambdas.是否有任何语法使它成为可能? 更新: 我的代码: var temp=anyDao.streamAll(Task::class.java) .where { t->t.taskStatus== TaskStatus.accepted } .collect(Collectors.toList()); 我遇到此错误: Caused by: java.lang.IllegalArgumentException: Could not extract code from lambda. This error sometimes occurs because your lambda references objects that aren't Serializable. lambda中引用的所有对
36 2023-02-25
编程技术问答社区
平台类型/方法的kotlin非空标记
我经常使用UUID.randomUUID(). Kotlin推断的类型为UUID!.有什么方法可以告诉Kotlin这种特定方法的返回类型为UUID并且始终是非零的?还是我必须到处做UUID.randomUUID()!!或实现自己的方法? 解决方案 如果您明确声明类型,则应将其声明为不可删除而不是平台类型. val id1 = UUID.randomUUID() // UUID! val id2: UUID = UUID.randomUUID() // UUID 我可以通过功能来使事情变得容易一些.通过声明返回类型,它具有相同的效果: fun generateUUID(): UUID = UUID.randomUUID() 或作为扩展名: fun UUID.next(): UUID = UUID.randomUUID() 其他解决方案 kotlin不强迫您在平台类型上使用!!.如果java的函数的返回值没有无效注释@NotNull或@Nullabl
64 2023-02-25
编程技术问答社区
Kotlin未解决的引用:CLI上gradle的println
在kotlin函数返回崩溃之前,将println语句放置. stacktrace: thufir@dur:~/NetBeansProjects/kotlin$ thufir@dur:~/NetBeansProjects/kotlin$ gradle clean build --stacktrace w: Classpath entry points to a non-existent location: e: /home/thufir/NetBeansProjects/kotlin/src/main/kotlin/example.kt: (14, 5): Unresolved reference: println > Task :compileKotlin Using Kotlin incremental compilation FAILURE: Build failed with an exception. * What went wrong: Execution f
146 2023-02-25
编程技术问答社区
Kotlin使用Java回调接口
我有一个WebView.我想打电话 public void evaluateJavascript(String script, ValueCallback resultCallback) 此方法. 这是ValueCallback接口: public interface ValueCallback { /** * Invoked when the value is available. * @param value The value. */ public void onReceiveValue(T value); }; 这是我的kotlin代码: webView.evaluateJavascript("a", ValueCallback { // cant override function }) 有人有想法覆盖Kotlin中的O
50 2023-02-25
编程技术问答社区
改变kotlin扩展函数接收器的JVM名称
这是一个普遍的问题. 假设我有Kotlin编写的扩展功能,该功能将DP转换为PX并返回NONNULL INT fun Int.toPx() { /** implementation */ } Java中的功能将看起来像This public int toPx(int $receiver) { /** implementation */ } 我认为$receiver使Java-Interop感到产生和不吸引人. 我知道您可以使用@JvmName的注释与某些组合(例如@file:JvmName)更改Java中的名称. 当我尝试将@JvmName与receiver网站目标使用时,它说 "此注释不适用于目标type usage,并使用站点目标@receiver" 是否有一种方法可以克服并更改接收器的名称,如果不是最好的选择. 解决方案 @JvmName只能应用于文件的功能,属性访问者和顶级包装外墙.不支持参数名称. 基本上,您可以定义
26 2023-02-25
编程技术问答社区
Kotlin中的数据类
: 有什么区别 定义1 data class Person (var name:String, var age:Int) 定义2 class Person (var name:String, var age:Int) 定义3 class Person (){ var name:String = "" var age:Int = 1 } 在我使用自动完成的3个情况下,我看到了相同的方法,例如POJO ...这是相同但以3种不同的方式? 的3种情况? 解决方案 equals,hashCode和toString 的差异 定义1 和定义2&3 之间的最重要区别是定义1 ,equals,hashcode和toString方法被覆盖为您: equals和hashCode方法测试结构均等 toString方法返回一个漂亮的人类友好的字符串 代码示例: 注意:在Kotlin中,==操作员调用对象的.equals()方法.
48 2023-02-25
编程技术问答社区
从java调用kotlin函数,这些函数是java中的关键字?
由于new不是Kotlin中的关键字,因此我可以在Kotlin中具有以下功能. fun new(): String { return "just returns some string" } 但是我无法从Java调用此功能,因为new是Java中的关键字.我想知道此功能在Java Realm中是否有一些别名.我没有发现任何Intellij建议可能是此功能的可能别名. 编辑1 : 我在Kotlin中写了以下代码: fun new(): String { return "just returns some string" } fun main(args:Array){ new() } 我看了看java字节码.如下. // ================MainKt.class ================= // class version 50.0 (50) // access flags 0x31 pu
38 2023-02-24
编程技术问答社区
Kotlin:如何将数组传递给Java注释
我想使用@OneOf package io.dropwizard.validation; 的注释 Java用法: @OneOf(value = {"m", "f"}) kotlin用法:??? 我已经尝试过: @OneOf(value = arrayOf("m", "f")) 和此: @OneOf(value = ["m", "f"]) (编辑:此示例自Kotlin 1.2以来起作用,它支持注释中的数组文字,谢谢@bakawaii) 我得到的是: 类型推理失败.预期类型不匹配: 必需:字符串 找到:Array kotlin版本:1.1.2-2 解决方案 value参数会自动转换为kotlin中的vararg参数,如 http://kotlinlang.org/docs/reference/annotations.html#java-annotations . 此特定情况的正确语法是@O
26 2023-02-24
编程技术问答社区
在Kotlin中实现(/inherit/~ extend)注释
在Java中,我有可能"实现"注释. 样本Java注释: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface JavaClassAnno { String[] value(); } 示例Java"实现": class MyAnnotationLiteral extends AnnotationLiteral implements JavaClassAnno { //
14 2023-02-24
编程技术问答社区
可以从Java访问Kotlin typealias吗?
假设我有一个Kotlin 1.1 typealias对于这样的Kotlin函数类型 typealias Consumer = (T) -> Unit 我可以从java访问 import kotlin.Unit; import kotlin.jvm.functions.Function1; Function1 action = ... 是否有可能在其Kotlin typealias名称下从Java访问Kotlin Function1接口(即Consumer)? 解决方案 来自保持建议类型别名: nb java没有"类型别名"的概念,也无法在类成员签名中看到它们. 所以不,您不能使用Java中的typealiases,您只会看到Kotlin中具有类型类型的任何参数或变量的实际类型.
90 2023-02-24
编程技术问答社区