Proxys dynamiques sur des classes
Bonjour,
J'essaye de comprendre le fonctionnement d'une partie de lambdaj (ou encore d'EasyMock 2) mais je bloque.
Ces frameworks arrivent à créer des proxys dynamiques sur des classes et non sur des interfaces.
Avec la classe java.lang.reflect.Proxy fournit par java, il est possible de créer un proxy dynamique sur une interface comme ceci:
Code:
1 2 3 4
|
Foo f = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),
new Class[] { Foo.class },
handler); |
Jusqu'à là, je suis. Mais, Lambdaj arrive à créer un proxy sur un objet sans interface pour conserver les invocations faite sur cet objet pour ensuite les rappeler. (Ici Personne est une classe héritant seulement de Object)
Code:
1 2
|
List<Personne> lstPersonnesTries = sort( lstPersonnes, on( Personne.class ).getAge() ); |
Je trouve ce système très intéressant car il permet de conserver un typage, mais je suis dans l'incapacité de le comprendre, ce qui est très frustant.
Est-ce qu'il y aurait une âme charitable pouvant m'expliquer comment ces frameworks fonctionnent?
Merci d'avance.