通过Scala Spec中对象的定义,导入的对象是永久隐藏的警告

时间:2018-06-07 17:13:24

标签: scala

我正在尝试编写规范,然后出现编译错误:

 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")
  }    
}

有效但如果我尝试直接在import语句中指定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")
  }    
}

1 个答案:

答案 0 :(得分:0)

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