Scala använder sig av något som kallas typ-inferens, som bl.a. gör att datatypen inte behöver deklareras till vänster om tilldelningen, om man vill att variabeln skall ha samma typ som den konkreta instansen. Exempel:
Java-kod med typ-duplicering: HashMap<String, List<Integer>> hashMap = new HashMap<String, List<Integer>>(); Motsvarande Scala-kod utan typ-duplicering: var hashMap = new HashMap[String, List[Integer]] Scala-alternativ, om man vill specifiera en annan typ på variabeln än instansen: var map: Map[String, List[Integer]] = new HashMap[String, List[Integer]]
Ett annat exempel på onödigt omfattande kodning i Java, är då du ska implementera en entitetsklass med ett antal fält och tillhörande getters och setters. Så här enkelt kan en java-kompatibel sådan klass implementeras med Scala:
class Person ( @BeanProperty var name: String, @BeanProperty var age: Int, @BeanProperty var countryOfBirth: String ) { }
Scala-klassen ovan duplicerar inte datatyperna, så som du skulle göra i en Java-implementation (se länken nedan) t.ex. datatypen Int dupliceras både i settern och gettern. Trots att klassen ovan inte explicit specificerar några getters/setters så kommer de ändå finnas tillgängliga via anrop, tack vare annoteringen @BeanProperty, dvs från Java-kod kan du använda ovanstående Scala-klass på följande sätt:
Person person = new Person("Tomas", 36, "S"); person.setAge(37); person.setCountryOfBirth:("SWEDEN);Sidan nedan (med engelska kommentarer) innehåller ett mer detaljerat kodexempel, och har även en Java-implementation av samma entitet, som båda implementerar ett gemensamt Java-interface, som används från JUnit-kod för att visa att beteendet är detsamma med den mycket mindre omfattande Scala-implementationen:
/ Tomas Johansson, 2010-01-19