java - 我可以在 kotlin 语言中使用 java 公共(public)数学库吗?

标签 java kotlin

我看过可以在 java 中使用 kotlin 的论坛和问题,但是关于我的问题是我想使用 apache 数学公共(public)库(“它只在 java 中可用”)在 kotlin。我的项目在 intellij idea 中,我已经正确导入了库,我向您展示它是如何用 java 编写的

import org.apache.commons.math3.distribution 

NormalDistribution normalDistribution = new NormalDistribution(10, 3);
double randomValue = normalDistribution.sample();

```

最佳答案

类就是类,不管它是用 Java 还是 Kotlin 定义的。在大多数情况下,这意味着您只需在 Kotlin 中做 Kotlin 的事情,在 Java 中做 Java 的事情,而不管您使用的类是在哪里定义的。也有异常(exception),比如静态方法,但大多数东西“都能正常工作”。

虽然我对 NormalDistribution 类一无所知,但我希望这会起作用:

val normalDistribution = NormalDistribution(10.0, 3.0);
val randomValue = normalDistribution.sample();

好吧,原来我错了。我不得不将上面的文字从 (10, 3) 更改为 (10.0, 3.0)。这是 Java 和 Kotlin 之间的区别。 Kotlin 不进行自动数字类型提升。因此,虽然我可以将 Integer 文字用于等效的 Java 代码,但在 Kotlin 中,我必须使用 Double 文字。但是我的 IDE 立即向我展示了这一点,包括一条工具提示消息,告诉我到底出了什么问题。这是 Kotlin 的东西,不是 Java 的东西。如果我尝试调用 Kotlin 中定义的方法并将 double 作为参数,并且我尝试将整数传递给它,也会发生同样的事情。这与定义 NormalDistribution 的语言无关。在那个练习之后,我可以肯定地说这个 Kotlin 代码工作正常。

也许更多的问题在于您还不太了解 Kotlin。学习 Kotlin 的一部分是意识到在 Kotlin 代码中使用 Java 类在很大程度上不是问题。

关于java - 我可以在 kotlin 语言中使用 java 公共(public)数学库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485760/

相关文章:

java - 代理(squid)后面的 Maven 测试

java - 当 Comparator 有两个抽象方法时,它如何成为功能接口(interface)?

c# - 将 XML 数据从 C# 传递到 Java?

android - 为什么我无法解析这种日期格式 yyyy-MM-dd'T'HH :mm:ss. SSSZ?

具有多个 "parameter"的 Kotlin 枚举

concurrency - 协程:List 中的延迟操作按顺序运行。

javascript - 我有错误:E/RecyclerView:未连接适配器;跳过布局

java - 如何在netbeans中使用方法定义查找值?

android - 在 kotlin 中调用父类中的内部类不起作用

java - RxJava 在可连接的 observable 上重新连接不起作用