Desde la version 5 de Java tenemos la posibilidad de anotar nuestro codigo, a estas alturas todos conocemos las anotaciones, las hemos usado o sencillamente la hemos visto en ejemplos de frameworks o en codigo de nuestros amigos. Son esas @Cosas que vemos antes de clases, campos o metodos. Aunque se puede decir que las anotaciones han sido utiles, porque la mayoria de los frameworks las usan, dentro de JSE, son realmente muy pocas, las mas comunes: @Override y @SupressWarning.
La noticia es que Java7 incluira el paqueta javax.annotation con muchas nuevas (algunas muy buenas) anotaciones. Basicamente se incluiran anotaciones para los siguientes contextos:
- Anotaciones para el lenguaje
- Precondiciones
- Uso adecuado de APIs
- I/O
- Seguridad
- Concurrencia
En las anotaciones para el lenguaje tendremos por ejemplo @NonNull (ojo es diferente a @NotNull), cuando se utiliza el compilador verifica que si el campo anotado es nulo es porque algo anda mal y notifica al programador. Un uso comun seria en los compareTo
public int compareTo(@Nonnull Integer anotherInteger) { int thisVal = this.value; int anotherVal = anotherInteger.value; return (thisVal < anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1)); } O tambien @CheckForNull, @Nullable. En el caso d la anotaciones para precondiciones existiran:
- Signed
- Nonnegative
- MatchesPattern
- Syntax
La @Sytanx por ejemplo se podra usar en metodo que retornen una String y esa deba estar formateada siguiendo alguna sintaxis. Por ejemplo @Syntax("HTML") o @Syntax("Groovy") Hay muchas otras como @Inmutable, @WillClose para IO @ThreadSafe, @GuardedBy para seguridad y muchas mas que pueden encontrar en.
http://today.java.net/pub/a/today/2008/09/11/jsr-305-annotations.html Mi duda ahora es: "¿Bienvenidos al Annotations Hell?" es cierto que algunas de esas anotaciones podrian reducir el trabajo del programador y dejar muchas cosas en mano del compilador y del JRE, el miedo esta en llegar al punto de ver cosas como: @Class("Empleado")@Extends(@Class("Persona"))@UseDatabase(@JNDI("jdbc/myCon")) @Require@NonNull@ThradSafe@ Method("sayHello")@NeedWebAccess(@Mode("JSF"),@AlternateMode("WebServices"))@CanExport(@Language("Ruby"))public class @Class("name"){ } Sencillamente sera el fin de Java como lenguaje, porque como siempre he dicho, la plataforma esta hecha para durar muuucho tiempo mas usando cualquier otro lenguaje jejej. Comentarios: 1 Fecha último comentario: 16/09/2008 15:29
Noticia publicada en
www.javahispano.org. Accede a la página web y participa
You have already tagged this post. Your tags: