首页 > 解决方案 > 根据 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")
  }    
}

标签: scala

解决方案


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,则需要将其写出来或使用重命名导入)。通常它应该是一个警告,您必须传递将警告变成错误的编译器选项。


推荐阅读