Scala接受泛型类

CruncherBigData

我有两个案例课

abstract  class MainClass
case class Acc(x:String, y:String)  extends MainClass
case class Bcc(x:String, y:String)  extends MainClass

我需要编写一个通用功能,将其中任何一个都使用,并返回相同case类的列表,类似于:

def f1[T <: MainClass ]():List[T]={
val o1 = new Acc("sss","ddd").asInstanceOf[T]
List(o1)
}

唯一的问题是我正在对类型类“ Acc”进行硬编码。我的问题是如何使f1方法实例化通用类T而不是Acc或Bcc

提前致谢。

格罗特里安斯特

您可以使用ClassTag在运行时保留有关Class的元信息。

import scala.reflect._


abstract  class MainClass
case class Acc(x:String, y:String)  extends MainClass
case class Bcc(x:String, y:String)  extends MainClass

object  Boot extends App {



  def f1[T <: MainClass : ClassTag ]():List[T]={
    val o1 = classTag[T].runtimeClass.getConstructor(classOf[String], classOf[String]).newInstance("sss","ddd").asInstanceOf[T]
    List(o1)
  }

 val list =  f1[Acc]

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章