В 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
(или что-то еще, что работает) для перегрузки методов над универсальными типами, которые стираются до того же типа из-за стирания?