viernes
oct032003
Jatha, macros en Java
viernes, octubre 3, 2003 at 10:21AM
Trayendo a Java algo del poder de Lisp. Esta línea es la presentación de Jatha una herramienta que permite crear macros en Java que funcionan de manera similar a las macros de Lisp.
Cuando un programador de Lisp crea una macro tiene todo el poder de Lisp a su disposición. Esta librería permite que cuando un programador de Java cree una macro tenga todo el poder de Java a su disposición.
¿ Y para que sirven estas macros ?, os preguntaréis. Pues bien, Jatha es un preprocesador que utiliza estas macros para crear programas en Java. Por ejemplo:
class Foo {
@PROP(String, name);
}
se transforma en :
class Foo {
private String m_name;
public String getName() { return m_name; }
public void setName(String name) { m_name = name;}
}
Otro ejemplo, esta macro:
@ENUM_OBJ(MyEnumeration, INT, "int", DOUBLE, "double")
Se transforma en :
class MyEnumeration {
public static final MyEnumeration INT = new MyEnumeration("int");
public static final MyEnumeration DOUBLE = new MyEnumeration("double");
public static int getNumElements() {
return 2;
}
public static MyEnumeration getElement(int __index) {
switch (__index) {
case 0: return INT;
case 1: return DOUBLE;
default: return null;
}
}
public static MyEnumeration getElement(String __name) {
if (__name.equals("int")) return INT;
if (__name.equals("double")) return DOUBLE;
return null;
}
private MyEnumeration(String __description) {
this.__description = __description;
}
private String __description;
public String toString() {
return __description;
}
}
Interesante, ¿no? Os podéis descargar Jatha libremente desde su página web ya que tiene licencia GNU GPL.
Cuando un programador de Lisp crea una macro tiene todo el poder de Lisp a su disposición. Esta librería permite que cuando un programador de Java cree una macro tenga todo el poder de Java a su disposición.
¿ Y para que sirven estas macros ?, os preguntaréis. Pues bien, Jatha es un preprocesador que utiliza estas macros para crear programas en Java. Por ejemplo:
class Foo {
@PROP(String, name);
}
se transforma en :
class Foo {
private String m_name;
public String getName() { return m_name; }
public void setName(String name) { m_name = name;}
}
Otro ejemplo, esta macro:
@ENUM_OBJ(MyEnumeration, INT, "int", DOUBLE, "double")
Se transforma en :
class MyEnumeration {
public static final MyEnumeration INT = new MyEnumeration("int");
public static final MyEnumeration DOUBLE = new MyEnumeration("double");
public static int getNumElements() {
return 2;
}
public static MyEnumeration getElement(int __index) {
switch (__index) {
case 0: return INT;
case 1: return DOUBLE;
default: return null;
}
}
public static MyEnumeration getElement(String __name) {
if (__name.equals("int")) return INT;
if (__name.equals("double")) return DOUBLE;
return null;
}
private MyEnumeration(String __description) {
this.__description = __description;
}
private String __description;
public String toString() {
return __description;
}
}
Interesante, ¿no? Os podéis descargar Jatha libremente desde su página web ya que tiene licencia GNU GPL.
in
j2se
j2se 
Reader Comments