Error type mismatch while using generics in scala

200 Views Asked by At

Getting errors while using generics in scala:

import scala.collection.mutable

class test {
  val car = mutable.Map.emprty[String, (Int,Int)]
  read[String, (Int,Int)] ("file.txt",car)
  def read[T,V] (fileName:String, mapName: mutable.Map[T,V]) {
    mapName("abc") = (1,2)
  }

Error:

   error: type mismatch
   found: java.lang.String("abc")
   required: T
1

There are 1 best solutions below

0
On

Your code isn't really generic, because inside read function body, you are assuming T and V to be String and (Int, Int). The generic parameters are bounds on your method signature and they are only useful when types of arguments or return types relate in some way to each other.

I think with your code will be perfectly fine to use concrete types in the read function signature:

def read(fileName: String, mapName: mutable.Map[String, (Int, Int)]) {
  mapName("abc") = (1,2)
}