问题标签 [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.

0 投票
2 回答
1164 浏览

java - Kotlin - 伴随对象的属性可见性

所以我有下面的代码,用 Kotlin 编写。

return params.keys.containsAll(MANDATORY_PARAMS)编译器说,我在最后一条指令行 ( ) 上遇到编译错误Unsolved reference: MANDATORY_PARAMS,但我真的不明白为什么。

我认为伴随对象应该对他们“陪伴”的类的属性有某种可见性。

我能做些什么来解决这个问题?我怎样才能使两者及其伴侣对象MANDATORY_PARAMS都可见?MandatoryParametersValidator

(免责声明:此代码正在从 Java 迁移到 Kotlin。在 Java 版本上,mandatoryParametersHaveBeenProvided曾经是同一类的静态方法。)

非常感谢!

0 投票
1 回答
1313 浏览

mocking - 使用 Java + Mockito 模拟 Kotlin 方法

所以我将一个小型 Java 代码库迁移到 Kotlin 只是为了好玩,并且我已经迁移了这个 Java 类:

进入这个 Kotlin 表示:

但是现在我在使用 Java 编写的现有测试套件时遇到了一些问题。更具体地说,我有这个使用 Mockito 的单元测试:

它失败了when,说

有谁知道我怎样才能使这项工作?我尝试在 Kotlin 版本上创建一个实际的 getter(而不是依赖于隐式 getter),但到目前为止没有运气。

非常感谢!

(如果你问自己为什么我从生产代码而不是测试开始,或者我为什么不使用 mockito-kotlin,这些问题没有真正的答案。就像我说的那样,我迁移只是为了好玩并且想要向我团队中的其他开发人员展示在实际项目中实现语言之间的互操作性是多么容易)

更新:我注意到如果我添加when(inputs.getParameter("key")).thenReturn("value")到相同的setupInputs()方法(在inputs.getEngineURL()) 调用之前),我最终会在Inputs#getParameter. 怎么回事?!

0 投票
3 回答
2248 浏览

java - 在 Kotlin 中使用具有函数类型的函数接口

从 Kotlin 调用 Java 代码时,会有SAM 转换,因此 Java 代码如下所示:

可以是这样的:

现在,我正在开发一个 Kotlin 项目,我想将功能接口定义为事件侦听器:

SomeClass我有一个设置监听器的函数:

当我创建这个类的一个实例并尝试调用 setter 函数时,我会这样做:

我知道 Kotlin 具有函数类型,因此不支持来自各种站点的 SAM 转换,例如这个

我已经阅读了一些关于函数类型的内容,但我之前没有使用过它们。

我将如何重写我的代码,以便我可以像这样调用 setter 函数?

.

0 投票
4 回答
3666 浏览

kotlin - Kotlin 中的数据类

有什么区别:

定义 1

定义 2

定义 3

在我使用自动完成功能的 3 种情况下,我看到了与 POJO 相同的可用方法……这是否相同,但有 3 种不同的方式?

在此处输入图像描述

0 投票
5 回答
22869 浏览

kotlin - Kotlin 扩展函数访问 Java 私有字段

我想在使用 Kotlin扩展功能时访问 Java 的私有字段

假设我有一个JavaABCABC只有一个私有字段mPrivateField。我想在 Kotlin 中编写一个扩展函数,它出于任何原因使用该字段。

Kotlin函数将是:

我得到的错误是:

Cannot access 'mPrivateField': It is private in 'ABC'

有什么办法可以绕过这个限制?

0 投票
4 回答
1394 浏览

kotlin - 如何在 kotlin 编程语言中创建如下所述的循环?

如何使用 for 循环在 kotlin 中制作它?

0 投票
1 回答
219 浏览

kotlin - Kotlin,针对 Java 互操作:惰性收集的惯用类型?

以 Java 互操作为目标时,惰性集合应该使用什么类型?

  • Sequence<T>对 Kotlin 调用者最有意义,因为默认情况下它的扩展函数是惰性的,但强制 Java 调用者处理 Kotlin 标准库类型并手动转换序列迭代器(序列不扩展可迭代!)
  • Iterable<T>由于 for 循环中的隐式使用,对 Java 调用者有意义,但会导致毫无戒心的 Kotlin 调用者由于非惰性扩展函数而意外放弃惰性
  • Stream<T>最适合 Java 和 Kotlin 调用者,但可能有开销,并且是 Java 8+(Kotlin 目标 6+)
0 投票
1 回答
4451 浏览

kotlin - Kotlin 构造函数委托给内部数据类?

我们有一个抽象的 Java 类(我们无法修改)AbstractClass,我们想在 Kotlin 中实现它。一个要求是 Kotlin 实现可以使用 vanilla Jackson Databind序列化/反序列化为 JSON 。这导致我们进行了以下实现:

此类将始终从 Java 中使用,目前您可以像这样 (Java) 实例化它:

但我们更愿意像这样实例化它:

我当然可以将 Kotlin 代码更改为如下所示:

但这非常冗长,有点违背了使用 Kotlin 的目的。

我想我想做的是这样的(伪代码):

(注意构造函数by MyClassData中的MyClass显然不起作用)

即我想以某种方式破坏或委托 MyClass 的构造函数以采用与 MyClassData 相同的参数而不复制它们。这是您可以在 Kotlin 中做的事情,还是有另一种方法可以在不添加太多代码的情况下解决它?

0 投票
1 回答
78068 浏览

java - 将 Kotlin 数组转换为 Java 可变参数

如何将我的 Kotlin 转换Array为可变参数 Java String[]

如何将 ArrayList 传递给可变参数方法参数?

0 投票
7 回答
26840 浏览

spring - 如何在 kotlin 中将 @Autowired 或 @Value 等弹簧注释用于原始类型?

使用弹簧注释自动装配非基元,例如

作品。

但这不起作用:

有一个错误:

原始类型不允许使用 lateinit 修饰符。

如何将原始属性自动装配到 kotlin 类中?