问题标签 [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 - 更改 kotlin 扩展函数接收器 JVM 名称
这是一个普遍的问题。假设我有一个用 kotlin 编写的扩展函数,它将 DP 转换为 PX 并返回一个 NonNull Int
java中的函数看起来像这样
在我看来,这$receiver
使得 Java 互操作感觉生成且不受欢迎。
我知道您可以将@JvmName
注释与某些组合一起使用,例如@file:JvmName
更改 java 中的名称。
当我尝试@JvmName
与receiver
站点目标一起使用时,它说
“此注释不适用于目标type usage
和使用站点目标@receiver
”
有没有办法克服这个问题并更改接收者的名称,如果没有,最好的选择是什么。
kotlin - 谁能在这里详细解释 Kotlin/Native spinner 应用程序项目结构?还有关于不同模块如何工作的细节
我想具体了解各个客户端模块如何使用公共模块。哪些是所有客户端和服务器共享的真正通用部分。
谢谢你。
kotlin - 为什么不内联`Intrinsics.checkParameterIsNotNull`?
在 Kotlin 中,如果我们将一些 Kotlin 字节码反编译为 Java,我们经常可以看到这样的语句,它会进行 null 检查:
如果我们进一步探索,我们可以看到这个方法的反编译实现,它的实现和它的名字完全一样:
由于这个Intrinsics
类Intrinsics.checkParameterIsNotNull
(
既然这个方法的实现很短(而且经常出现),为什么不内联这个函数呢?
是否有一些注释可以让我们阻止 Kotlin 编译器生成这个空检查?(也许像@TrustedNotNull
)
对于 ProGuard:我很担心,因为我正在处理共享库,而 ProGuard 在这种情况下不适合我。我显然知道那些代码消除工具(ProGuard、dce-js),并且我知道如何以及何时使用它们。
我只是问为什么没有内联函数。
android - 如何在 Kotlin 中使用 get() 定义类类型属性
如何在Kotlin中使用 get() 定义返回类的属性,我在下面尝试过,但它没有编译
kotlin - Kotlin 和 Spring Data JPA 产生 PropertyReferenceException
我目前正在使用带有 Spring Data JPA 的 Kotlin 1.2 和 Spring Boot 2.0 M7。在这个项目中,我使用自定义基础存储库而不是 JPARepository 或 PagingAndSortingRepository(真的没关系)
这是基本界面
这是实际的存储库
最后是文章数据类
但是在启动时,我得到了这个奇怪的错误
我认为这与https://jira.spring.io/browse/DATACMNS-1223有关,但我能做些什么来解决这个问题?将接口转移到 Java 也无济于事。
java - kotlin:2 lambda 参数的语法
我是科特林的新手。我有一个带有 2 个重载方法的 java 类。一个接受一个功能,另一个接受两个
和
现在在 kotlin 中,我正在尝试使用 2 个参数调用版本(如在 java 中):
但我得到编译错误。
Kotlin:意外标记(使用 ';' 分隔同一行上的表达式)
什么是正确的语法?
java - kotlin - 平台类型/方法的非空标记
我经常使用UUID.randomUUID()
. kotlin 推断的类型是UUID!
. 有没有办法告诉 kotlin 这个特定方法的返回类型是UUID
并且总是非空的?还是我必须到处做UUID.randomUUID()!!
或实施我自己的方法?
java - 实现Java接口时“意外覆盖:以下声明具有相同的JVM签名”
我在尝试从我的 Kotlin 代码扩展 RuntimeException 并实现用 Java 定义的GraphQLError接口时遇到了以下错误。这是错误:
意外覆盖:以下声明具有相同的 JVM 签名 (getMessage()Ljava.lang.string;):
public open fun <get-message>(): String? defined in NegativeCountException
public open fun getMessage(): String? defined in NegativeCountException
以下是我的代码:
其中GraphQLError
是一个接口,在 Java 中定义,如下所示:
似乎它与getMessage()
定义的 in冲突Throwable
。
我无法更改接口的代码,因为它来自库。
如何创建自己的运行时异常,以实现GraphQLError?
PS:我也尝试了以下,并收到了一个非常相似的错误:
kotlin - 如何使用 KotlinJS 正确测试 Web 套接字连接
我无法测试使用本机的代码WebSocket
。这是测试函数的主体:
我将 Karma 与 Mocha 测试运行器一起使用。以下代码执行时没有任何错误,但setTimeout
实际上被忽略且从未执行。
Mocha 似乎支持setTimeout
基于--delay
. 但是,当我使用带有client: { mocha: { delay: true } }
Karma 配置的标志时,测试只是冻结并失败,输出以下原因消息:
已断开连接,因为 60000 毫秒内没有消息。
执行测试的正确方法是什么setTimeout
?如果这很棘手,有没有其他方法可以WebSocket
在它完全连接后执行断言?我还没有使用任何特定于 Mocha 的功能,所以我不介意更改框架。