Java Tuples Library for Stream Pipelines

🚀 Stop writing boilerplate: Meet Dynamic Strongly-Typed Tuples for Java! We’ve all been there: You're working with Java Streams and need to pass two or three related values to the next stage. Your options? ⚠️ Create a "throwaway" POJO (Boilerplate overload). ⚠️ Use Map.entry or Pair (Limited to 2 items). ⚠️ Use Object[] (Goodbye, type safety). I decided to build a better way. Introducing io.github.amusing_glitch.tuple — a library that dynamically generates strongly-typed records at compile time based on your usage. ✨ What makes this different? Most tuple libraries are static. This one is adaptive: ✅ Dynamic Records: If you call DynamicTuple.of("Alice", 28), the library generates a Tuple2<String, Integer> record for you in the background. ✅ Named Tuples: Want better context? You can define field names using lambdas: DynamicTuple.named(Student.type, name -> "Alice", age -> 12). This generates a Student record with actual .name() and .age() accessors. ✅ Stream Zipping: It includes built-in support for zipping multiple streams into typed tuples—no more messy mapping. ✅ Lean Codebase: Since it's dynamic, if you stop using a specific tuple shape, the generated class is removed on the next compile. No ghost classes! 🛠 Current Status The library is fully functional but in its "early days". Works: Core logic, Named/Numbered tuples, Stream Zip. Coming Soon: Project Reactor support (zip) and more sophisticated error reporting. ⚠️ Also, please expect minor bugs, as it hasn't been tested on an actual massive java repository!! I’d love for the Java community to take it for a spin. It’s a great fit for complex stream pipelines where clarity and type safety shouldn't mean more boilerplate. 🏁 Get Started: 🔗 GitHub: https://lnkd.in/gdw_VhJu 🔗 Maven Central: https://lnkd.in/gERD4iWa Check it out and let me know what you think! Does this solve a pain point in your current workflow? 👇 #Java #SoftwareDevelopment #OpenSource #Programming #JavaStreams #CleanCode #TypeSafety

To view or add a comment, sign in

Explore content categories