在 C# 中,我可以重载泛型类型的方法,如下例所示:
// http://ideone.com/QVooD
using System;
using System.Collections.Generic;
public class Test {
public static void Foo(List<int> ints) {
Console.WriteLine("I just print");
}
public static void Foo(List<double> doubles) {
Console.WriteLine("I iterate over list and print it.");
foreach(var x in doubles)
Console.WriteLine(x);
}
public static void Main(string[] args) {
Foo(new List<int> {1, 2});
Foo(new List<double> {3.4, 1.2});
}
}
但是,如果我尝试在 Scala 中做同样的事情,它会引发一个编译时错误,List[Int]
并且List[Double]
由于擦除而擦除到相同的类型。我听说 Scala 的Manifest
s 可以用来解决这个问题,但我不知道如何。我在文档中也没有发现任何有用的东西。
所以我的问题是:我如何使用Manifest
s (或其他任何有效的方法)来重载由于擦除而擦除为相同类型的泛型类型的方法?