scala - 根据 Scala Spec 中的对象定义,导入的对象是永久隐藏的警告
问题描述
我正在尝试编写规范,然后出现编译错误:
imported `Writer' is permanently hidden by definition of object ZipWriter in package util
[error] import com.thing.util.Writer
我有这个对象:
object Writer
我的规范是这样做的:
package com.thing.util
import com.thing.util._
import java.io.File
class WriterSpec {
behavior of "buildFilePath"
it must "append the compressionExtension to the file" in {
val files: Array[File] = Array(new File("/some/filepath.someData"))
val compressed = Writer.buildFilePath(files, "gz")
compressed must be("/some/filepath.someData.gz")
}
}
这有效,但如果我尝试直接在导入语句中指定 Writer,一切都会失败。是什么赋予了?
package com.thing.util
import com.gemini.util.Writer
import java.io.File
class WriterSpec {
behavior of "buildFilePath"
it must "append the compressionExtension to the file" in {
val files: Array[File] = Array(new File("/some/filepath.someData"))
val compressed = Writer.buildFilePath(files, "gz")
compressed must be("/some/filepath.someData.gz")
}
}
解决方案
package com.thing.util import com.thing.util._
在文件开头从您自己的包中导入任何东西(或所有东西)是没有意义的,所有这些都已经可见。
我尝试直接在import语句中指定Writer,都失败了
该消息说,因为已经存在com.thing.util.Writer
,所以导入com.gemini.util.Writer
不会做任何事情,Writer
在您的代码中仍然意味着com.thing.util.Writer
(如果您需要使用com.gemini.util.Writer
,则需要将其写出来或使用重命名导入)。通常它应该是一个警告,您必须传递将警告变成错误的编译器选项。
推荐阅读
- angular - Angular 生命周期钩子参数
- javascript - 当用户单击按钮时,如何使 html 运行 javascript 函数?
- r - 将标签与 na_tags 匹配
- unity3d - 如何在棋盘游戏中心上方动态定位相机 - Unity3d
- angular - 如何将 PDF 文件从我的 Angular 前端发送到我的 laravel 后端
- javascript - 为什么 JSON 转换返回 Array?
- html - 来自其他网站的图片可以在我的网站上创建 cookie 吗?
- asp.net-mvc - 如何找出“当前登录用户”?
- excel - 如何检查列是否有重复值,如果找到则合并相邻列?
- google-apps-script - 有没有更简单的方法来实现缺少的“getNamedRange(....)”方法?