当前位置: 首页 > 面试题库 >

从Java代码使用Scala类型别名

李昱
2023-03-14
问题内容

假设我在scala中将类型别名定义为

object Foo {
  type Bar = Option[String]
}

看来我无法在Java代码中这样引用别名(它只是抱怨 找不到符号 ):

import Foo.*;

public class Cafebabe {
  void bar(Bar x) {
  //...
  }
}

我也尝试过静态导入。

(更具体地说,我有无法更改的Java反射代码,需要知道参数类型,并且需要向其提供Bar别名)。

我知道,我可以在Scala中创建包装器

class BarWrapper(value: Bar)

但也许我错过了其他方式?


问题答案:

类型别名仅对Scala编译器可见,并且与通用类型一样,它们不会出现在JVM类文件中的任何位置。

如果您使用的是Java,那么您将无法使用非别名类型,Option[String]因为 javac
无法得知Bar您在Scala代码中声明的类型别名。无论您在什么地方使用,都Bar只需使用Option[String]scala.Option<String>在Java中),它应该可以正常工作。



 类似资料:
  • 问题内容: 我正在尝试从Java代码中使用代码,原因是它在Eclipse中不起作用,而Scala则可以。但我无法获得方法 之所以能够正常工作,是因为它似乎期望第二个参数使用a,而且我看不到如何在Java中创建a 。我该如何解决? 我尝试过的事情: 1)使用null -获得奖励。 2)替换为with ,但是javac报告各种错误,例如没有方法。 3)在包对象中使用该对象,但此处建议的语法为,但无法解

  • 我在Postgresql中有一个数据类型为json的表,我必须在Scala code中为case class field选择该字段的合格映射(我不使用slick,我可以直接设置类似sql.json的内容)。我考虑下一个变体: <代码>java。lang.Object,并进行以下验证 <代码>播放。libs。Json或io。circe。Json 但我不能选择其中一个,我也没有其他可能的候选人。 用于

  • 我试图从Scala项目中创建一个可执行的Jar。因此,我遵循了一个教程。它建议在eclipse中创建一个Java主类,该类调用Scala入口点。当在eclipse中执行时,这可以很好地工作。在添加这个类之后,我能够导出一个可执行的jar。然而,它不适用于 我确保在导出时激活“将所需库打包到jar中”。我的Java主类如下所示(其中驱动程序也位于包核心中) 在执行导出的字符时,会抛出以下错误,我可以

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

  • 问题内容: 斯卡拉 在Scala中,哪里可以观察到类和类型之间的差异?为什么这种区别很重要? 在编程Scala时,它只是从语言设计的角度考虑还是具有“实际”影响? 或者是根本,以“固定边界”的类型系统(,来我的心)? 爪哇 在Java中还可以识别出上面提到的许多注意事项/差异/问题? (有关语言的介绍,请参见类型和类之间的区别?。) 问题答案: 当您说“类型”时,我将假设您主要是指静态类型。但是我

  • 问题内容: 有没有人能将C#代码集成到Java应用程序中呢? 代码很小,所以我可以用Java重写,但是如果可能的话,我宁愿重用代码。不要重复自己,等等。 另外,我知道我可以将C#公开为Web服务或其他任何东西,但是其中包含一些安全性/加密功能,因此,我宁愿将其紧密集成。 编辑:它将在基于服务器的应用程序上,因此“下载”另一个运行时是无关紧要的。 问题答案: 有一个IL到Java字节码编译器Gras