Scala 不能重载只以函数(不同类型)为参数的方法吗?

Scala 不能重载只以函数(不同类型)为参数的方法吗?,scala,overloading,type-erasure,Scala,Overloading,Type Erasure,我有一个方法: def udf(func: RDD[Row] => RDD[Row]) = ... 还有另一种方法: def udf(func: List[String] => List[String]) = ... 在斯卡拉。它给了我这个: Error:(...) double definition: method udf:(func: List[String] => List[String])UDFOperator and method udf:(func: org.a

我有一个方法:

def udf(func: RDD[Row] => RDD[Row]) = ...
还有另一种方法:

def udf(func: List[String] => List[String]) = ...
在斯卡拉。它给了我这个:

Error:(...) double definition:
method udf:(func: List[String] => List[String])UDFOperator and
method udf:(func: org.apache.spark.rdd.RDD[Row] => org.apache.spark.rdd.RDD[Row])UDFOperator at ...
have same type after erasure: (func: Function1)UDFOperator
  def udf(func: List[String] => List[String]) = {
      ^

JVM不支持泛型,因此Scala解决运行时泛型类型检查可能需要的任何操作都无法完成


在您的例子中,这两种方法都需要
Function1[\u,\u]
参数,而JVM无法区分它们之间的区别。您必须重命名其中一个。

JVM不支持泛型,因此Scala无法完成解决运行时泛型类型检查所需的任何操作


在您的例子中,这两种方法都需要
Function1[\u,\u]
参数,而JVM无法区分它们之间的区别。您必须重命名其中一个。

好的,所以我刚才尝试了
defs(a:List[Int])=a.size
&
defs(a:List[String])=a
也不起作用。这是有道理的。如果我必须在那里做同样的事情,我可以做
defs[T](a:List[T])=a.size
。好的,所以我只是尝试
defs(a:List[Int])=a.size
&
defs(a:List[String])=a
也不起作用。这是有道理的。如果我必须在那里做同样的事情,我可以做
defst](a:List[T])=a.size