Ich bin seit Stunden dabei, folgendes in Scala zum laufen zu bringen (Beispiel was mein Problem zeigt):
Der obige Code erzeugt folgenden Fehler:
aus kann ich auch kein [+] ich machen wegen
bei [-I]
Jemand eine Idee wie das zum laufen kriege?
Code:
object Demo {
def main(args: Array[String]): Unit = {
val converter: Map[String, Converter[Any]] = Map("Int" -> new IntConverter()) // Zeile 3
// value muss den Type Any haben. Methoden wie supports() habe ich mal weg gelassen
val value: Any = 1
println(converter("Int").convert(value))
}
}
trait Converter[I] {
def convert(in: I): String // Zeile 12
}
class IntConverter extends Converter[Int] {
def convert(in: Int): String = in.toString()
}
Der obige Code erzeugt folgenden Fehler:
(Fehler bei Zeile 3)type mismatch; found : IntConverter required: Converter[Any] Note: Int <: Any (and IntConverter <: Converter[Int]), but trait Converter is invariant in type I. You may wish to define I as +I instead. (SLS 4.5)
aus kann ich auch kein [+] ich machen wegen
(Fehler bei Zeile 12)covariant type I occurs in contravariant position in type I of value in Demo.scala
bei [-I]
(Fehler bei Zeile 3)type mismatch; found : IntConverter required: Converter[Any]
Jemand eine Idee wie das zum laufen kriege?