Another Tour of Scala


The Gist

Annotations gives a pretty decent overview of how annotations are used in Scala.

My Interpretations

Annotations in Scala are conceptually the same as they are in Java. Many of the Java keyword modifiers are annotations in Scala (as opposed to language constructs). For example, native in Java is the annotation scala.native.

For the purposes of interacting with Java, Scala classes may annotate methods with the throws annotation. This is the equivalent of the throws keyword in Java and lets the Java compiler know what exceptions must be caught.

Java Annotations, when used in Scala, are specified using one of two types of syntax:

One way in which Scala uses annotations is to bridge Scala’s way of dealing with properties and Java’s way:

The BeanProperty annotation basically creates these methods for us. This lets Scala code work with systems like Spring (that expect the get/set style) without having duplicated code in our Scala source.

My Thoughts on this Feature

I’ve never felt like annotations were a particularly good addition to Java; they always seemed like a hack to support poorly designed frameworks like J2EE and JAX-RS. I don’t know how endemic they are to Scala at this time, so lets hope they don’t get used much. Scala is a much more expressive language than Java and I think it can get by without annotations being used all over the place.

Also, the use of parens vs. braces seems needlessly inconsistent.