问题标签 [scala-java-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 投票
1 回答
3420 浏览

java - JavaConverters asScala 方法的时间复杂度

从 Scala 2.9 版开始,有一个方便的转换器,可以java.util.List通过编写如下内容将其他集合转换为 Scala 的数据结构:

这是一个可爱的小功能,因为它允许人们在与现有 Java 代码交互时利用 Scala 的优势。

但是,我不确定所涉及的时间和空间复杂性,并且在官方文档中找不到任何内容,因此,以下问题:

我在哪里可以获得有关 JavaConverters 的复杂性(时间和空间)的信息?

0 投票
1 回答
967 浏览

scala - 如何为带有可选字段的案例类创建一个 Java 友好的 API

我在 Scala 中创建了一些用于持久化数据 mongodb 的案例类。客户端应用程序是用 Java 编写的,并通过传入这些案例类的实例来使用我的存储库。

它工作正常,除非我使用可选字段:

现在从Java我不想引用Scala的选项,所以我宁愿重写一个允许客户端调用类似的构造函数

伴随对象的工厂方法也可以。我正在寻找一种解决方案,它允许我在没有任何 scala 依赖的情况下编写 Java,最好不要比调用构造函数更复杂。想法?

0 投票
6 回答
8468 浏览

java - 从 Java 访问 scala.None

如何scala.None从 Java 访问?

最后一行导致编译器因“type scala.None 不带参数”而死机。

这失败了“找不到符号构造函数None()”:

这失败了“找不到符号变量无”:

在 2007 年,这曾经奏效,但后来 Scala 发生了变化。Java 编译器给出error: incompatible types

0 投票
2 回答
6623 浏览

scala - Scala:处理Java库异常的最佳方法?

假设我正在使用 Scala 项目中的 Java 库。那个 Java 库到处都抛出异常,但我觉得让它们“在 Scala 世界中”传播并不自在,因为无法确定 Scala 方法可以抛出哪些异常(除非通过记录它们)。所以这是我倾向于写的那种代码:

然后,通常,我将使用Either.RightProjection.flatMap链接返回的方法Either[Throwable, ...]Either.RightProjection.map混合返回的方法Either[Throwable, ...]和其他方法。或者只是Either.fold做一些Throwable有价值的事情。但是,不知何故,这仍然感觉不完全正确

这是在 Scala 中处理 Java 异常的最“惯用”方式吗?没有更好的方法吗?

0 投票
2 回答
4540 浏览

scala - 如何使用 javap 从 Java 中学习使用 scala.None?

在之前的问题Accessing scala.None from Java中,似乎人们已经习惯于javap弄清楚如何scala.None从 Java 进行访问。我想知道他们是怎么做到的。仅供参考,答案是:

可以短接为:

给定这个程序 ( OptionTest.scala):

我是这样跑javap的:

这是javap输出的一部分:

我还在scala.None和上运行了 javap scala.Option。如何从javap输出中得出:

  1. NoneNone.type是扩展的唯一类型对象Option
  2. 伴随对象的apply()方法是必需的

?

0 投票
1 回答
5405 浏览

java - 无法在 Java 中使用 Scala 类

我相信 Scala 和 Java 可以互相使用类。

但是,我发现自己的 Java 类不能在同一个包中使用 Scala 类。

scala 类定义为:

尝试使用这段代码的代码是:

我得到的错误是:

有人可以给我一些提示吗?

非常感谢

0 投票
2 回答
2329 浏览

scala - Scala:从java接口重写方法

我正在尝试在 scala 中实现一个通用的 java 接口。我看过: 如何在 Scala 中扩展包含泛型方法的 Java 接口?Scala:覆盖通用 Java 方法 II

但我仍然找不到答案。这是来自 Spring web 的方法签名:

我在scala中尝试了以下内容:

但是我得到一个错误,说这个方法没有覆盖任何东西。如果我通过执行以下操作擦除类型:

它将方法标记为被覆盖。我的问题是如何在这里保持类型安全并强制它覆盖接口方法?

问候

编辑

弹簧接口:

0 投票
5 回答
46341 浏览

java - 自动将 Scala 代码转换为 Java 代码

我有一个用 Scala 编写的应用程序,我的一些团队成员想要它的 Java 版本。这是一个使用另一个用 Scala 编写的 API 的演示应用程序,他们希望该应用程序的 Java 版本能够使用 Java 中的 API。但是,该应用程序有点大,我不想在 Java 中手动重写(他们也不想学习 Scala)。是否有任何工具可以从 Scala 代码自动生成(可读)Java 代码?

0 投票
2 回答
683 浏览

java - Java 静态类成员和 Scala 互操作性

来自Scala 编程语言概述,第二版

在上面的示例中,Scala 程序调用方法startsWithsubstringof String,这是在 Java 中定义的类。它还访问outJava 类的静态字段System,并调用其(重载)println方法。即使 Scala 没有静态类成员的概念,这也是可能的。事实上,每个 Java 类在 Scala 中都被视为两个实体,一个包含所有动态成员的类和一个包含所有静态成员的单例对象。

我了解将 Scala 的伴随对象翻译成 Java 字节码,但我不确定对于相反的示例(从 Java 到 Scala) ,上部块引用中的粗体文本“在 Scala 中看到”到底是什么意思。

这是否意味着具有静态成员的 Java 类实际上被转换或只是解释为 Scala 中的两个实体?还是我的两个假设都是错误的?

0 投票
1 回答
3445 浏览

java - 如何在 Java 代码中使用 Scala 可变参数

有很多关于从 Scala 代码调用 Java varargs 的文章,但我唯一能找到相反的方法是这个问题:Using scala vararg methods in java,它没有任何具体的例子。

我正在尝试使用scala.Console一些 Java 代码,因为它java.io.Console在 Eclipse 中不起作用,而 Scala 则可以。但我无法获得方法

工作,因为它似乎期待scala.collection.Seq[Any]第二个参数,我不知道如何 Seq在 Java 中创建。我该如何解决这个问题?

我尝试过的事情:

1)使用空

- 获得奖励NullPointerException

2) 替换了nullwith scala.collection.Seq.empty(),但是 javac 报各种错误,比如Seq没有empty方法。

3)使用包对象Nil中的对象,但是这里scala.collection.immutable建议的语法是,但无法解决。scala.collection.immutable.package$Nil$.MODULE$

当然我可以只使用readLine()不带可变参数的方法,但这太容易了。