问题标签 [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 投票
3 回答
635 浏览

java - 如何从 Java 反射性地获取 Scala 对象上的字段?

我有以下对象:

如何使用 Java 反射来获取每个变量的值?我可以从对象中获取方法,但似乎无法弄清楚如何获取字段。这可能吗?

谢谢!

0 投票
1 回答
2375 浏览

java - Eclipse Java 中的 Scala 对象嵌套类

使用 Eclipse IDE 时,我无法从 Java 代码中引用 Scala 类。有问题的 Scala 类嵌套在 Scala 对象结构中。当尝试在 Java 代码中使用该类时,Eclipse 抱怨使用二进制名称。

下面是定义感兴趣的类 ( ) 的 Scala 代码示例Inner

要在 Java 代码中使用该类Inner,我使用以下代码:

但是,Eclipse (Indigo) 编译器在第一行抱怨以下消息:

嵌套类型 mypackage.Outer$Middle$Inner 无法使用其二进制名称引用

有趣的是,上面的 Java 代码在与 NetBeans 6.9.1 一起使用时有效。

这是 Eclipse 编译器的问题吗?是否有任何标志允许使用二进制名称?或者,或者,这是 Scala 的问题还是我使用它的方式?

0 投票
1 回答
309 浏览

java - 无法在scala中设置名为type的java注释成员?

我正在尝试将一些java代码移植到scala。该代码使用带有名为的成员的注释,type但是这是 scala 中的关键字。有没有办法在scala中解决这个有效的java成员?

这是Java代码

这部分代码在 scala 中是相同的,只是它type是一个关键字,所以它不会编译。有没有办法逃避type关键字?

这也是带有type成员的java类的问题

HasType.java

UseType.scala

0 投票
2 回答
841 浏览

java - Intellij idea 无法解析包含美元的类

这里的问题:我有包含已编译的 scala 代码的 jar。在罐子里我看到

Step.class Step$class.class

两者都是合法的java类。

但是,当我尝试在 Intellij Idea java 项目中使用 Step$class 时,它会显示:“无法解析符号 Step$class”。但是代码是用 maven 编译的,所以我认为问题出在 IDE 中。

0 投票
1 回答
1007 浏览

java - 从 Java 访问 Scala 独立单例对象

我在访问 Scala 中的 fromString 方法时遇到问题。我尝试了 javap,并且我访问的至少一种方式应该可以工作,但事实并非如此。

应用程序.scala

测试.java

JAVAP 输出

javap App 编译自“App.scala”

javap App$ 编译自“App.scala”

0 投票
2 回答
734 浏览

java - 使用 Scala 的 Raw 类型实现 Java 接口

我正在尝试使用 Scala 为 Sonar 构建扩展。我需要扩展以下 Java 接口:

资源类型实际上定义如下:

我知道我可以解决创建 Java 原始超类的问题。我想坚持仅使用 Scala,也知道是否有我遗漏的解决方案,以及我是否可以建议 SonarSource 人在他们身边做出改进(使用原始类型)。

我已经读过这个问题,以及某些情况下的一些解决方法,但似乎没有一个适用于这里(一种解决方法一个明显固定的票,还有票 2091 ......)

0 投票
2 回答
2538 浏览

java - Java类中的Scala getter和setter

我想创建一个遵循 Scala 设置器/获取器约定的 Java 类。

我尝试了以下简单的课程,但它不起作用:

但是当我尝试从 scala 访问它时:

我收到“重新分配给 val”错误消息。我试图寻找这个,但我发现了从 scala 到 java 的所有问题。

正确的方法是什么?

谢谢!

0 投票
1 回答
694 浏览

scala - 密封特性/对象案例类字节码从 2.9.1 更改。到 2.9.2?

两个目录中的相同源文件

我想在 Java 类中引用 Errors.scala 中的以下密封特征。在 Scala 2.9.1 中,我能够将 Java 中的 Errors.TooBig 引用为 Errors$TooBig$,它在 2.9.2 中不再编译。

错误.scala

JavaTest.java

我在两个不同的目录(2.9.1/2.9.2)中有相同的源文件。我可以使用 2.9.1 编译源代码,但不能使用 2.9.2。

这是 com.abc.Errors$TooBig$ 类文件的 javap 转储的差异:

您可以清楚地看到 2.9.1 和 2.9.2 都生成了一个名为 'Errors$TooBig$' 的类。

0 投票
1 回答
1963 浏览

java - 用户定义的值类在 Java 中是什么样的?

通过与 Haskell 的比较,我想我了解 Scala 2.10 的新“价值类”功能newtype

我的问题是,值类如何出现在使用声明它的 Scala 包的 Java 代码中?值类是作为 Java 端的引用类出现的,还是被完全删除(因此作为它包装的类型出现)?换句话说,当 Java 涉及到源代码级别时,值类的类型安全性如何?


编辑

根据 SIP-15 文档(在 Daniel 的回答中链接),上面的代码不会编译,因为值类不允许有任何初始化逻辑,因为要么v必须是明确的 val,要么Probability必须有一个unbox方法和一个相应的box它的伴生对象上的方法,并且因为值类必须只有一个字段。正确的代码是:

然而,问题本身仍然有效。

0 投票
3 回答
4762 浏览

scala - 从 java.util.Vector 转换为 scala Seq

我可以看到有一些方法可以从 Java 列表转换为 Scala seq(使用asScala方法),但我找不到任何java.util.Vector.

这种转换也有类似的方法吗?