Utilización en SQLJ de funciones del SDK de Java Versión 5
Las aplicaciones SQLJ puede utilizar varias funciones que aparecieron con el SDK de Java Versión 5.
Importación estática
La importación estática le permite acceder a miembros estáticos sin calificarlos con el nombre de la clase a la que pertenecen. Para las aplicaciones SQLJ, esto significa que puede utilizar miembros estáticos en expresiones de lenguaje principal sin calificarlos.
double r = cos(PI * E);
import static java.lang.Math.*;
Anotaciones
Las anotaciones Java son un medio para añadir metadatos a los programas Java que también pueden afectar a la forma en que esas herramientas y bibliotecas tratan esos programas. Las anotaciones se declaran con declaraciones de tipo anotación, que son similares a las declaraciones de interfaz. Las anotaciones Java pueden aparecer en los siguientes tipos de clases o interfaces:
- Declaración de clase
- Declaración de interfaz
- Declaración de clase anidada
- Declaración de interfaz anidada
No puede incluir anotaciones Java directamente en programas SQLJ, pero puede incluir anotaciones en código fuente Java y, a continuación, incluir ese código fuente en sus programas SQLJ.
public @interface MyAnot { }
También declara la siguiente anotación de marcador en un
programa llamado MyAnnot2.java:public @interface MyAnot2 { }
// Class annotations
@MyAnot2 public @MyAnot class TestAnnotation
{
// Field annotation
@MyAnot
private static final int field1 = 0;
// Constructor annotation
@MyAnot2 public @MyAnot TestAnnotation () { }
// Method annotation
@MyAnot
public static void main (String a[])
{
TestAnnotation TestAnnotation_o = new TestAnnotation();
TestAnnotation_o.runThis();
}
// Inner class annotation
public static @MyAnot class TestAnotherInnerClass { }
// Inner interface annotation
public static @MyAnot interface TestAnotInnerInterface { }
}
Tipos enumerados
Un tipo enumerado es
un tipo de datos que consta de un conjunto de valores ordenados. El SDK para Java versión 5 introduce el tipo " enum
" para tipos enumerados.
- En archivos fuente Java (archivos.java) que se incluyen en un programa SQLJ
- En declaraciones de clases de SQLJ
enum
:public class TestEnum2
{
public enum Color {
RED,ORANGE,YELLOW,GREEN,BLUE,INDIGO,VIOLET}
Color color;
… // Get the value of color
switch (color) {
case RED:
System.out.println("Red is at one end of the spectrum.");
#sql[ctx] { INSERT INTO MYTABLE VALUES (:color) };
break;
case VIOLET:
System.out.println("Violet is on the other end of the spectrum.");
break;
case ORANGE:
case YELLOW:
case GREEN:
case BLUE:
case INDIGO:
System.out.println("Everything else is in the middle.");
break;
}
Valores genéricos
Puede utilizar genéricos en sus programas Java para asignar un tipo a una colección Java. El traductor SQLJ tolera la sintaxis genérica de Java. Aunque puede utilizar valores genéricos en variables de lenguaje principal de SQLJ, la utilidad de hacer esto es limitada porque el programa traductor de SQLJ no puede determinar los tipos de esas variables de lenguaje principal.
- Una lista (List) de objetos
List:
List <List<String>> strList2 = new ArrayList<List<String>>();
- Un HashMap cuyo par clave/valor es de
tipo String:
Map <String,String> map = new HashMap<String,String>();
- Un método que utiliza como entrada una lista
(List) con elementos de cualquier tipo:
public void mthd(List <?> obj) { … }
- Generics anidados en el tipo de retorno de
método:
public* List<Map<String, Object>> *method(String, String, String);
Bucle for
mejorado
El
bucle for
mejorado le permite especificar la
ejecución de un conjunto de operaciones para todos los miembros de
una colección o matriz. Puede utilizar el iterador del bucle for
mejorado en expresiones de lenguaje principal.
String[] names = {"ABC","DEF","GHI"};
for (String n : names)
{
#sql {INSERT INTO TAB (VARCHARCOL) VALUES(:n) };
}
Varargs
Varargs facilita el pase de un número arbitrario de valores a un método. Un Vararg situado en la última posición de argumento de una declaración de método indica que los últimos argumentos son una matriz o secuencia de argumentos. Los argumentos pasados pueden ser utilizados por un programa SQLJ en expresiones de lenguaje principal.
public void runThis(Object... objects) throws SQLException
{
for (Object obj : objects)
{
#sql { INSERT INTO TAB (VARCHARCOL) VALUES(:obj) };
}
}