为什么嵌套 Java 类不能从 Scala 导入?

2024-04-30

我应该如何使用嵌套 Java 类来模拟斯卡拉莫克,特别是当所说的嵌套 Java 类来自第三方库时?

鉴于以下来源:

src/main/java/Outer.java

/**
  * Outer class that offers a Nested class inaccessible from Scala :(
  */
 public class Outer {
   public class Nested {

   }
 }

src/main/java/UseNestedJavaClassFromJava.java

public class UseNestedJavaClassFromJava {
   private Outer.Nested nested;
 }

src/main/scala/ImportNestedJavaClass.scala

// TODO uncomment the below line to break the build
//import Outer.Nested

编译时取消注释 scala import 行会导致编译失败UseNestedJavaClassFromJava.java工作得很好。

使用 gradle 的完整最小示例:https://github.com/billyjf/async-http-client-gradle-scala https://github.com/billyjf/async-http-client-gradle-scala.

显然,这个问题已经在下面的问题中得到了解决,但是仅仅为了测试利用带有嵌套 Java 类的 Java 库的 Scala 代码而诉诸 Java 粘合代码或反射技巧对我来说似乎有点不合理,真的没有其他解决方案吗?

Scala无法访问Java内部类? https://stackoverflow.com/questions/19345798/scala-cant-access-java-inner-class


我终于使用 Mockito 找到了解决方案:

import org.mockito.Mockito
import org.scalamock.scalatest.MockFactory
import org.scalatest.mockito.MockitoSugar
import org.scalatest.{FlatSpec, Matchers}

class OuterNestedTest extends FlatSpec with MockFactory with Matchers with MockitoSugar {
  "Nested Java class" should "be mockable using Mockito from within a scalatest" in {
    val mockedNestedJavaClass = Mockito.mock(classOf[Outer#Nested])

    Mockito.when(mockedNestedJavaClass.methodWithAParam("some value"))
      .thenReturn("mocked", Nil: _*)

    mockedNestedJavaClass.methodWithAParam("some value") shouldBe "mocked"
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么嵌套 Java 类不能从 Scala 导入? 的相关文章

  • 如何在 Scala 中编写 Pig UDF

    我正在尝试在 Scala 中编写 Pig UDF 使用 Eclipse 我已将 pig jar 添加为 java 构建路径中的库 这似乎解决了以下 2 个导入问题 导入 org apache pig EvalFunc 导入 org apac
  • “函数是第一等值”这到底是什么意思?

    有人可以用一些很好的例子清楚地解释它吗 在解释函数式编程时 我在 Scala 中遇到了这句话 一流 并不是一个正式定义的概念 但它通常意味着一个实体具有三个属性 有可能used 不受限制 只要 普通 值可以 即从函数传递和返回 放入容器等
  • 如何设计具有相互依赖的测试的 Specs2 数据库测试?

    有没有一些首选的方法来设计Specs2 http etorreborre github com specs2 测试 有很多测试取决于之前测试的结果 下面 您将找到我当前的测试套件 我不喜欢var位于测试片段之间 不过 它们是 需要的 因为某
  • 用惯用的 Scala 更新大型数据结构

    我已经尝试 Scala 一段时间了 并且经常遇到支持不可变数据结构的建议 但是当你有一个像这样的数据结构时3D 场景图 大型神经网络或任何具有大量需要频繁更新的对象的东西 对场景中的对象进行动画处理 训练神经网络 这似乎是 运行时效率极低
  • Scala REPL 中的递归重载语义 - JVM 语言

    使用 Scala 的命令行 REPL def foo x Int Unit def foo x String Unit println foo 2 gives error type mismatch found Int 2 required
  • 过滤字符串上的 Spark DataFrame 包含

    我在用火花1 3 0 http spark apache org releases spark release 1 3 0 html and 火花阿夫罗1 0 0 https github com databricks spark avro
  • 通用 scala 函数,其输入是变量数量的函数

    我想定义一个函数f需要另一个函数g 我们需要g采取采取n双打 对于某些固定n 并返回一个 Double 函数调用f g 应该返回具体值n 例如 f Math max 2因为 Math sin 具有类型 Double Double gt Do
  • 在 Akka 中配置嵌套 Router

    我有一些嵌套的路由器 应创建它FromConfig 我想要的是这样的 test akka actor deployment worker router round robin nr of instances 5 slave router b
  • 多个 scala 库导致 intellij 出错?

    我正在使用 intellij 14 和 scala 2 11 6 使用 homebrew 安装并使用符号链接 ln s usr local Cellar scala 2 11 6 libexec src usr local Cellar s
  • Scala:如何将可变参数指定为类型?

    代替 def foo configuration String String 我希望能够写 type Configuration String String def foo configuration Configuration 主要用例是
  • 从 HList 获取元素

    我尝试了 HList 并按预期进行了以下工作 val hl 1 foo HNil val i Int hl 0 val s String hl 1 但是 我无法让以下代码正常工作 让我们暂时假设对列表进行随机访问是一个聪明的主意 class
  • 如何使用 Spark 2 屏蔽列?

    我有一些表 我需要屏蔽其中的一些列 要屏蔽的列因表而异 我正在读取这些列application conf file 例如 对于员工表如下所示 id name age address 1 abcd 21 India 2 qazx 42 Ger
  • Spark:如何使用crossJoin

    我有两个数据框 df1有 100000 行并且df2有 10000 行 我想创建一个df3这是两者的交叉连接 val df3 df1 crossJoin df2 这将产生 10 亿行 尝试在本地运行它 但似乎需要很长时间 您认为本地可以实现
  • 使用 Scala 获取 Spark 数据集中最新时间戳对应的行

    我对 Spark 和 Scala 比较陌生 我有一个具有以下格式的数据框 Col1 Col2 Col3 Col 4 Col 5 Col TS Col 7 1234 AAAA 1111 afsdf ewqre 1970 01 01 00 00
  • 在 Scala 中将元素追加到列表末尾

    我无法添加 type 元素T到一个列表中List T 我尝试过myList myElement但它似乎创建了一个奇怪的对象并访问myList last始终返回放入列表中的第一个元素 我怎么解决这个问题 List 1 2 3 4 Result
  • 将 IndexToString 应用于 Spark 中的特征向量

    Context 我有一个数据框 其中所有分类值都已使用 StringIndexer 进行索引 val categoricalColumns df schema collect case StructField name StringType
  • IntelliJ:线程“主”java.lang.NoClassDefFoundError中的异常:org/apache/spark/sql/types/DataType

    附言 有一个类似的问题here https stackoverflow com questions 40287289 java lang noclassdeffounderror org apache spark logging 但那是在
  • 如何通过 javascript 和 ajax 调用 Scala 中的方法?

    我不知道我的标题是否有点误导 但这是我真正需要帮助的 我正在获取这个网址 get fb login fbEmail function data console log data 这是我的路线 GET fb login email prese
  • 如何在 sbt 控制台中加载 scala 文件? [复制]

    这个问题在这里已经有答案了 可能的重复 将 Scala 文件加载到解释器中以使用函数 https stackoverflow com questions 7383436 load scala file into interpreter to
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客

随机推荐

  • 简化债务加权有向图的算法

    我一直在使用我编写的一个小Python脚本来管理室友之间的债务 它有效 但缺少一些功能 其中之一是简化不必要的复杂债务结构 例如 如果下面的加权有向图代表一些人 箭头代表他们之间的债务 爱丽丝欠鲍勃 20 美元 查理欠 5 美元 鲍勃欠查理
  • 从Python中的一行中删除标签

    我有一个具有以下架构的文本 word1 word2 br word3 word4 br 我想删除最后一部分 并将我的结果存储在另一个文件中 我已尝试以下操作 仍然没有将结果保存在其他文件中 def main fileR open test
  • 如何解决webview内容重叠的问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 嗨 当背景设置为透明时 如何解决we
  • 变量范围的 Java 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以指导我查看 java 文档以了解变量的范围 我想查看 java 8 中的类变量和成员变量的
  • 如何使用 numpy 数组加速分形生成?

    这是我为使用牛顿方法制作分形而编写的一个小脚本 import numpy as np import matplotlib pyplot as plt f np poly1d 1 0 0 1 x 3 1 fp np polyder f def
  • 我可以在 Open Graph 中使用相对路径吗? [复制]

    这个问题在这里已经有答案了 我正在尝试设置相对路径og image元数据如下 在共享调试器时 我收到以下警告 推断属性 og image 属性应该明确 提供 即使可以从其他标签推断出值 有没有办法在Open Graph中使用相对路径 不 o
  • JPA:@JoinColumn 和 @PrimaryKeyJoinColumn 之间的区别?

    两者之间的确切区别是什么 JoinColumn and PrimaryKeyJoinColumn You use JoinColumn对于属于外键一部分的列 典型的列可能如下所示 例如 在具有附加属性的连接表中 ManyToOne Join
  • Django 模板文件夹

    我正在尝试 Django 并弄清楚如何设置urls py 以及 URL 如何工作 我已经配置了urls py在项目的根目录中 定向到我的博客和管理员 但现在我想向我的主页添加一个页面 所以在localhost 8000 所以我将以下代码添加
  • 如何在 Windows Phone 7 中创建自定义文本框?

    是否可以通过创建自定义文本框来处理 sip 我想创建一个自定义文本框 gt 创建获得焦点事件 gt 在我的自定义文本框的焦点上而不是 SIP 上 我的自定义键盘应该打开 要求 如何创建自定义文本框 打开自定义键盘而不是 SIP 获取文本字段
  • Python 终端菜单?终端着色?终端进度显示?

    我有一个广泛使用 Python 2 风格 的项目 我想知道是否有终端菜单库或类似的东西 我希望通过使用箭头键突出显示选项 一些颜色等简化一些选项 为我的脚本注入一些风味和活力 我隐约记得有一种方法可以制作 bash shell 终端菜单 但
  • Java初学者网络开发工具包/环境

    我的任务是使用 java 和 mysql 开发一个交互式网站 使用 servlet 检索和处理数据 使用小程序对客户端数据进行特殊处理 并处理客户端对不同数据视图的请求 您会推荐什么作为使用 java 进行 Web 开发的合适的通用工具包
  • DynamoDBMappingException:HASH 键没有映射

    编写 DynamoDB Java 应用程序时 如果表及其数据模型配置不正确 则在写入表或从表中检索时 您可能会收到 无 HASH 键映射 错误 完整的异常类似于 com amazonaws services dynamodbv2 datam
  • Django (JSONField) 和 tastypie

    我通过使用 JSONField 在 mysql 中创建了一个 TextField django 类型的表 这就是我的模型的样子 from django db import models from json field import JSON
  • 我什么时候应该在 ASP.NET MVC 中使用部分视图? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我已经完成了示例 asp net m
  • 在 Tridion 2011 SP1 中实现存储扩展时,未定义名为 No bean

    我正在尝试使用下面的示例来实现存储扩展 http www sdltridionworld com articles sdltridion2011 tutorials extending content delivery storage sd
  • 错误 C2601:“main”:本地函数定义非法 - MS VS 2013 编译器

    我正在用 C 编写一个小程序 当我尝试使用 MS VS 2013 编译器编译它时 出现错误 C2601 main 本地函数定义非法 这是什么意思 我的代码是 include
  • 在新选项卡或窗口中打开链接[重复]

    这个问题在这里已经有答案了 是否可以开一个a href链接在新选项卡而不是同一选项卡中 a href http your url here html Link a 您应该添加target blank and rel noopener nor
  • 加速Cuda程序

    要更改哪一部分来加速此代码 代码到底在做什么 global void mat Matrix a Matrix b int tempData new int 2 tempData 0 threadIdx x tempData 1 blockI
  • 在 C 中实现逻辑右移

    我正在致力于仅使用按位运算符在 C 中创建逻辑右移函数 这是我所拥有的 int logical right shift int x int n int size sizeof int size of int arithmetic shift
  • 为什么嵌套 Java 类不能从 Scala 导入?

    我应该如何使用嵌套 Java 类来模拟斯卡拉莫克 特别是当所说的嵌套 Java 类来自第三方库时 鉴于以下来源 src main java Outer java Outer class that offers a Nested class