覆盖scala中的case类方法

时间:2017-08-08 11:15:39

标签: scala case-class

我试图在我的case类中覆盖一个trait方法,它希望显示case类的所有成员。我正在使用它进行调试。

trait A{
   def myMethod(employee:Emp):Unit
}

case class Emp(id:String,name:String) extends A {
   override def myMethod(employee: Emp): Unit = 
              emp.productIterator.toList.foreach(println)
}

其他可能的方法是

    emp.productIterator.toList.mkString("\n")

宣布Emp("10","abc")。我是Scala的新用户,不知道如何调用trait的覆盖方法。

  1. 我不确定是否有任何其他通用方法来实现此功能 获取案例类成员的字符串形式。

  2. 使用特质和案例类来实现这一目标的有效方法 功能。我想了解如何应用方法和伴侣 对象可以实现。

  3. 我想实现logging而不是println。任何人都可以 建议一个教程吗?

1 个答案:

答案 0 :(得分:0)

之前的回答是因为我没有理解你的问题。这应该回答你的问题:

如果您只想将其用于调试目的,可以使用它:

trait A{
  def myMethod(employee:Emp):Unit
}

case class Emp(id:String,name:String) extends A {
  override def myMethod(employee: Emp): Unit =
    this.productIterator.toList.foreach(println)
}

Emp("1", "2").myMethod(None.orNull)

但更合乎逻辑的是使用此非泛型方法的对象:

case class Emp(id:String,name:String)

object A{
  def myMethod(employee: Emp):Unit = {
    employee.productIterator.toList.foreach(println)
  }
}

A.myMethod(Emp("1", "2"))

出于记录目的,您只能使用apache log4j