问题标签 [kotlin-interop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么在 Java 中实现返回 Unit 的 Kotlin 函数时必须返回 Unit.INSTANCE?
如果我有一个 Kotlin 函数
我想f
从Java调用,我必须这样做:
这看起来很丑陋。为什么我不能像 一样写f(i -> dosomething());
,因为Unit
在 Kotlin 中相当于void
在 Java 中?
java - Kotlin 属性的私有 getter 和 public setter
如何在 Kotlin 中创建一个具有私有 getter(或没有它)但具有公共 setter 的属性?
不适用于错误:Getter visibility must be the same as property visibility
就我而言,原因是 Java 互操作:我希望我的 Java 代码能够调用setStatus
但不能调用getStatus
.
kotlin - Java lambda 类型推断在 Kotlin 中无法按预期工作
为什么这段 Java 代码在没有显式类型参数的情况下无法在 Kotlin 中编译Collectors.toList<String>()
?有没有更惯用的方法来做到这一点?
android - Is there an overhead for writing a library in Kotlin for Android?
I'm considering porting a Java (Android) library to Kotlin. I really like Kotlin and the benefits over Java should reduce the number of bugs in the library.
Since the library is targeting a resource constrained environment I'm worried that by porting the library to Kotlin there will be extra overhead.
Does a Kotlin library (distributed as .class files) introduce any runtime or extra overhead versus a Java library?
Will the resulting Android app be any larger or slower because of Kotlin?
kotlin - Kotlin 中的 Jinq - 如何将 lambda 转换为 java SerializedLambda?
我可以在 Kotlin 中有可序列化的 lambda 吗?我正在尝试使用 Kotlin 的 Jinq 库,但它需要可序列化的 lambda。是否有任何语法使它成为可能?
更新:
我的代码:
我收到此错误:
lambda 中引用的所有对象都是可序列化的(代码在 java 中不会产生错误)。
更新 2
调试后,似乎 kotlin lambda 没有翻译成 Jinq 从中获取信息所需的 java.lang.invoke.SerializedLambda。所以问题是如何将其转换为 SerializedLambda。
kotlin - 平台声明与 Comparable 冲突
我收到来自 Comparable 接口的多个默认实现的编译器的平台声明冲突错误(如下所示)。
我明白为什么会出现此错误;在 Java中compareTo
映射到的两个默认实现。compareTo(Object)
因此,在孩子身上,Kotlin 不知道该使用哪一个。
是否有一种机制可以让我选择要使用的机制,或者更好的是,让我覆盖compareTo(Object)
?我试过定义compareTo(Any)
,但那是不对的。另一个帖子建议使用@JvmName
,但注释不适用于此处(根据编译器)。
任何帮助将不胜感激。谢谢!
kotlin - Kotlin 中 CompletableFuture 异常方法的使用
我正在尝试在 Kotlin 中处理 CompletableFuture 异常,但我无法弄清楚如何提供适当的参数。因此,例如,我有:
CompletableFuture.runAsync { "sr" }
.exceptionally{e -> {}}
但随后编译器抱怨Cannot infer type parameter T
。
我该如何解决?
java - JUnit、@ControllerAdvice 和 Kotlin 中缺少检查异常
我在 Kotlin 中编写了一个验证顾问EntityValidationException
,它在验证失败时抛出:
我有一个 JUnit 测试(我在 Kotlin 中编写了一些部分,在 Java 中编写了一些部分,以在现有的私有项目中学习 Kotlin),它检查是否引发了异常:
但后来我看到测试失败了,因为它抛出UndeclaredThrowableException而不是EntityValidationException
. 接下来,我读到Kotlin 没有检查异常。我认为不仅我有这个问题——我很确定当我们决定在生产项目中切换到 Kotlin 时,在 Spring 和 Java 中使用 @ControllerAdvice 处理异常的方式也可能会出现问题——因为它依赖于抛出的类,并且扔掉UndeclaredThrowableException
我们这种可能性。有没有办法绕过这种行为,以确保可以切换到 Kotlin 并且旧的Spring 处理异常的方式(和单元测试ValidationAdvisor
)将保持不变?预先感谢您的任何帮助。
项目的PS Github 存储库可在此处获得:Playgroud for Kotlin、Spring Data 等。
PS2堆栈跟踪:
对我来说看起来像EntityValidationException
(我想被抛出)原因UndeclaredThrowableException
。
EntityValidationException
Kotlin 类代码:
PS3这也没有用:
PS4也许问题在于@Aspect
Spring @Around
Data 存储库?
kotlin - Kotlin,项目结构
我正在编写一个 glm 的 kotlin 端口,我也将它用于 java 项目。
在这些 java 项目中,我想调用,例如glm.mul(...)
:
接口mul()
的函数在哪里mat2x2_operators
现在,如果我glm
声明为接口并且它的伴生对象mat2x2_operators
以这种方式扩展
我mul
在 java 上可以通过
glm.Companion.mul(...)
如果我尝试声明glm
为对象:
glm.INSTANCE.mul(...)
我不mul
直接写在下面的原因glm
是因为我有数百个函数我想在不同的地方(接口)保持有序,比如mat2x2_operators
精确
有没有办法做到这一点?