У меня есть абстрактный класс с методом, который принимает список поплавков в качестве параметра:Как перегрузить супер класс метод
abstract class a {
def m(p: List[Float]) {
println("Passed List[Float] to p()")
}
}
Я хочу перегружать м в бетоне простирающейся класс:
class b extends a {
def m(p: List[Double]) {
println("Passed List[Double] to p()")
}
}
Есть ли способ сделать это? Когда я пытаюсь это, я получаю эту ошибку:
error: name clash between defined and inherited member:
method m:(p: List[Double])Unit and
method m:(p: List[Float])Unit in class a
have same type after erasure: (p: List)Unit
def m(p: List[Double]) {
Я не хочу, чтобы переопределить, я хочу перегружать. Так что любая версия m() может быть вызвана в зависимости от типа аргумента. – bwroga
Вместо этого вы можете использовать Массивы. Массивы Scala отображаются непосредственно в массивы Java, которые не реализованы с помощью дженериков. Таким образом, информация типа фактически остается с массивом во время выполнения. – GJK