This page (revision-11) was last changed on 23-Oct-2013 10:34 by Dieter Käppel

This page was created on 26-Apr-2012 12:34 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
11 23-Oct-2013 10:34 6 KB Dieter Käppel to previous
10 23-Oct-2013 10:34 6 KB Dieter Käppel to previous | to last
9 26-Apr-2012 13:37 6 KB Dieter Käppel to previous | to last
8 26-Apr-2012 13:37 6 KB Dieter Käppel to previous | to last
7 26-Apr-2012 13:36 6 KB Dieter Käppel to previous | to last
6 26-Apr-2012 13:35 3 KB Dieter Käppel to previous | to last
5 26-Apr-2012 12:56 3 KB Dieter Käppel to previous | to last
4 26-Apr-2012 12:50 3 KB Dieter Käppel to previous | to last
3 26-Apr-2012 12:50 2 KB Dieter Käppel to previous | to last
2 26-Apr-2012 12:39 2 KB Dieter Käppel to previous | to last
1 26-Apr-2012 12:34 1 KB Dieter Käppel to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 5 added one line
* __Instance:__ Es können Instanzen von Klassen erzeugt werden, die nicht vom ClassLoader geladen wurden. Dabei handelt es sich natürlich nicht um "echte" Instanzen, sondern Objekte vom Typ com.intersult.code.Instance.
At line 67 added 34 lines
!Methods
Das Hinzufügen einer Methode inklusive Code kann zum Beispiel so aussehen:
{{{
JavaMethod equals = javaClass.addMethod("equals");
equals.setReturnType(Reflector.INSTANCE.ATOMIC_BOOLEAN);
equals.addAnnotation(Reflector.INSTANCE.OVERRIDE.newInstance());
JavaVariable object = new JavaVariable(Reflector.INSTANCE.OBJECT);
equals.getParameters().add(object);
equals.getCode().add("if (" + object.getVariableName() + " == null || !(" + object.getVariableName() +
" instanceof " + javaClass.getTypeNameSimple(false) + "))");
equals.getCode().add("\treturn false;");
equals.getCode().add("if (this == " + object.getVariableName() + ")");
equals.getCode().add("\treturn true;");
JavaVariable field = javaClass.getFields().get("field");
equals.getCode().add("return " + field.getGetter() + "().equals(((" + javaClass.getTypeName(false) + ")" +
object.getVariableName() + ")." + field.getGetter() + "());");
}}}
!Beans und Properties
In Java werden Felder mit Gettern und Settern zugegriffen. Die Methoden dazu heißen Accessors und können mit einer Methode hinzugefügt werden:
{{{
Accessor accessor = javaClass.addAccessor(Reflector.INSTANCE.STRING, "name");
}}}
!!!Instance
Hat man eine JavaClass vorliegen, bekommt man über die Methode getType() das Java-Class-Objekt zurück. Mit newInstance() bekommt man eine neue Instanz. Dieser Fall liegt immer vor, wenn die JavaClass vom Reflector bezogen wurde.
Eine JavaClass kann allerdings auch aus dem Code erzeugt werden, also über den Konstruktor new JavaClass("<package>", "<name>"). In diesem Fall kann eine Instance durch die Methode newInstance() der Klasse JavaClass erzeugt werden. Es handelt sich natürlich um keine echte Java-Instanz, sondern um ein Objekt vom Typ com.intersult.code.Instance.
!!!Annotations
Instance wird auch bei der Verwendung von Annotations benutzt. Die Code-Generierung arbeitet ja mit JavaClass-Objekten, da diese aus dem Code heraus gebaut werden können. Instanzen werden benötigt, da eine Annotation-Klasse instantiiert wird, sobald sie an einer Stelle im Code mit dem @-Operator angebracht wird.