Scala-kod innehåller mindre redundans än Java-kod

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:
Scala code is less redundant than Java code

/ Tomas Johansson, 2010-01-19