Thomas Darimont
Erfahrenes Mitglied
Hallo,
...insbesondere bei verschiedenen Serialisierungsverfahren ist das sehr nützlich:
(Wie man sieht bleiben die Instanzvariablen dieser Klasse dadurch mit ihrem Default-Wert initialisiert, die "richtgen" Werte werden dann später via Reflection gesetzt)
Ausgabe:
Wird so beispielsweise von der Serialisierungs-Bibliothek XStream http://xstream.codehaus.org/ intern verwendet.
Gruß Tom
...insbesondere bei verschiedenen Serialisierungsverfahren ist das sehr nützlich:
(Wie man sieht bleiben die Instanzvariablen dieser Klasse dadurch mit ihrem Default-Wert initialisiert, die "richtgen" Werte werden dann später via Reflection gesetzt)
Java:
/**
*
*/
package de.tutorials;
import java.lang.reflect.Constructor;
import sun.reflect.ReflectionFactory;
/**
* @author Tom
*/
public class CreateObjectWithoutConstructorCallExample {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println(new Bubu());
System.out.println("#######");
Constructor<?> objectConstructor = Object.class.getConstructor();
Constructor<?> constructor = ReflectionFactory.getReflectionFactory().newConstructorForSerialization(
Bubu.class, objectConstructor);
Bubu bubu = (Bubu) constructor.newInstance();
System.out.println(bubu);
}
static class Bubu {
int value = 4711;
String data = "Test";
public Bubu() {
System.out.println("XXX");
}
@Override
public String toString() {
return this.value + ": " + this.data;
}
}
}
Ausgabe:
Code:
XXX
4711: Test
#######
0: null
Wird so beispielsweise von der Serialisierungs-Bibliothek XStream http://xstream.codehaus.org/ intern verwendet.
Gruß Tom