Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从字符串中获取ClassTag作为类型参数传递给Scala函数?_Scala_Type Inference - Fatal编程技术网

如何从字符串中获取ClassTag作为类型参数传递给Scala函数?

如何从字符串中获取ClassTag作为类型参数传递给Scala函数?,scala,type-inference,Scala,Type Inference,我有一个Scala函数,定义如下 def func[V: ClassTag, VD <: kafka.serializer.Decoder[V]](implicit tag: ClassTag[VD]) = {} 但是我怎么称呼这个函数呢 val vClassStr = "java.lang.String" val vDClassStr = "kafka.serializer.StringDecoder" 我更喜欢键入证据参数,因此我将上面的内容写成: def func[V, VD &

我有一个Scala函数,定义如下

def func[V: ClassTag, VD <: kafka.serializer.Decoder[V]](implicit tag: ClassTag[VD]) = {}
但是我怎么称呼这个函数呢

val vClassStr = "java.lang.String"
val vDClassStr = "kafka.serializer.StringDecoder"

我更喜欢键入证据参数,因此我将上面的内容写成:

def func[V, VD <: kafka.serializer.Decoder[V]](data: Int)(implicit tag: ClassTag[VD])
我认为您的示例中存在一些语法问题

编辑:如果只需要从字符串构造类型,只需使用Java中的
Class.forName

func(v: String, vd: String, data: Int) = {
  val clz1 = Class.forName(v)
  val clz2 = Class.forName(vd)
  // etc
}

我纠正了问题中的语法。另外,我不明白如何使用你的解决方案调用我的函数,如果类的名称为。您能详细说明一下吗?如果您需要从字符串构造它,您可以只使用
Class.forName(“classname”)
ClassTag
类型用于捕获通过擦除删除的信息,而不是将字符串转换为
Class
。我需要将类类型传递到函数类型参数列表
func[Class.forName(“java.lang.String”)、Class.forName(“kafka.serializer.StringDecoder”)]
未编译。在我的函数中,我实际上试图调用
KafkaUtils
。我需要将
V
T
作为
type
参数传递,因此无法执行
Class.forName
,这是我的首选。
val tag = classTag[VD]
func(v: String, vd: String, data: Int) = {
  val clz1 = Class.forName(v)
  val clz2 = Class.forName(vd)
  // etc
}