lambdaj uses CGLIB proxy generation and Hamcrest conditional expressions to implement a DSL that allows you to write pseudo-functional collection iterations in Java. Like this:
forEach(personInFamily).setLastName("Fusco");
Or this:
List sortedByAgePersons = sort(persons, on(Person.class).getAge());
Slick, although all its tricks are done at runtime using proxies and reflection.