首页 文章

Scala案例类this()

提问于
浏览
2

我在我的scala项目中使用了几个case类(scala 2.10) . 我也在使用jacoco代码覆盖工具2.1.2版 .

当jacoco看一个简单的案例类时,例如

case class TestClass( val x : Int )
{
    def double() : Int = x * 2
}

它报告一个名为this()的自动生成对象的方法,该方法不带参数 . 显然,我的课只有一个参数 . 我能够满足jacoco测试此方法的唯一方法是通过进行如下测试:

test( "Case class test" )
{
    TestClass
}

我的主要问题是:

  • 这个方法实际上是为一个案例类的伴侣对象生成的无参数,还是一个jacoco bug?

  • 如果是前者,它提供的功能是什么?测试它的正确方法是什么?

谢谢 .

注:另外,我认为升级到jacoco 2.1.3可以解决这个问题,但这对我来说不是一个选择 .

1 回答

  • 1

    我假设 this 是构造函数的表示,因为没有使用该名称生成该名称的方法,并且唯一的此类构造函数位于伴随对象中 .

    它必须存在,因为必须创建伴随对象 . 它是私有的,因为伴随对象是作为单例创建的 . 另请注意,对象仅按需实例化,因此如果您不使用随播对象,则无法对其进行测试 .

    但是,即使是 TestClass 的简单实例化也应该使用:

    val x = TestClass(5)
    

    它在 TestClass 伴侣对象上调用一个方法,该方法反过来导致该对象被实例化 .

相关问题