#1 ViliX64
Zkuste se podivat na Scalu, tam muzete psat
val mojeInstance = new MojeTrida()
A kompilator odvodi, ze typ promenne ``mojeInstance`` je ``MojeTrida``. Funguje to i na priklad se seznamem:
trait Tvar // = zhruba interface
class Kruh extends Tvar
class Ctverec extends Tvar
...
val tvary = List(new Ctverec, new Ctverec, new Kruh)
val ctverce = List(new Ctverec, new Ctverec)
Kompilator odvodi, ze ``tvary`` jsou typu ``List[Tvar]`` (v syntaxi Javy by to bylo ``List<Tvar>``); ``ctverce`` jsou typu ``List[Ctverec]``.
No, a hlavne kompilator Scaly funguje na JVM; muzete pouzit jakoukoliv jinou Java knihovnu a vystpu je Java bytecode, takze vsechno funguje jako po masle.