6 ms·
It's not built in to the language, but JOOQ and QueryDSL come fairly close. I do miss LINQ though. The Java options are all clunkier because the type system is
by spricket 8y ago
It's not built in to the language, but JOOQ and QueryDSL come fairly close.
I do miss LINQ though. The Java options are all clunkier because the type system isn't nearly as flexible
- scarface74 8y agoI can't tell from looking at the examples, but can I do things like pass around arbitrary expressions: Person.Get(p => (p.Age > 65 && p.Sex == "M") || (p.Age > 63 && p.Sex == "F")) and have a method public List<Person> Get(Expression<Func<Person,bool>> expression) and have that expression interpreted correctly at run time by separate providers? You get full compile time checking and IDE supported autocomplete.
- spricket 8y agoYes. But it's done in a different way than C#. C# supports fields and field references so you can pass them directly to a function. The Java code "looks" like they do the same because they generate code to simulate method references instead. It's pretty clever and Javas code generation support for Annotation Processors is excellent and makes it possible to do this in a cross-ide cross-build-system way LINQ and JOOQ/QueryDSL all work on plain data objects with fields. But with Java you do it on a pseudo object generated from your existing classes
- scarface74 8y agoThat's really interesting. All of these years I've been beating up on Java for lack of something akin to LINQ. I guess I'll have to find something else to complain about.....
- spricket 8y agoIMO LINQ is still better because of how integrated into the language it is. JOOQ and QueryDSL were basically designed to replicate it as much as possible but not nearly to convenience levels of LINQ + Entity Framework