A Java library for scanning and indexing classpath metadata to enable runtime type system queries.
Reflections is a Java library that scans and indexes a project's classpath metadata at runtime, enabling reverse transitive queries on the type system. It solves the problem of manually writing reflection code to discover subtypes, annotated types, methods, and resources, providing a streamlined API for metadata analysis.
Java developers building frameworks, tools, or applications that require runtime introspection, such as dependency injection containers, annotation processors, or plugin systems.
Developers choose Reflections for its functional, composable query API, extensive scanner support, and ability to persist metadata for build-time integration, reducing boilerplate reflection code.
Java runtime metadata analysis
Provides a fluent, composable interface for metadata queries, as demonstrated with filter(), map(), and flatMap() operations in the README examples, reducing reflection boilerplate.
Includes multiple scanners for types, methods, fields, and resources, allowing detailed indexing and querying, such as MethodsAnnotated or ConstructorsSignature scanners.
Supports saving scanned metadata to XML/JSON or generating Java source code, enabling build-time integration for faster runtime performance, as mentioned in the 'Integrating with build lifecycle' section.
Maintains support for older 0.9.x APIs alongside the new functional API, easing migration for existing users despite breaking changes in 0.10+.
The library is not under active development, with the last release in October 2021, meaning bugs, security issues, or compatibility with newer Java versions may not be addressed.
Setting up scanners and filters, such as using ConfigurationBuilder and FilterBuilder, can be error-prone and requires careful tuning to avoid scanning unnecessary classes.
Scanning the entire classpath at runtime can slow down application startup, especially for large projects, and the README warns about configuring URLs and filters to mitigate this.
The transition from 0.9.x to 0.10.x introduced breaking changes, requiring code updates, as highlighted in the README's comparison table and notes on deprecated APIs.
An uber-fast parallelized Java classpath scanner and module scanner.
jOOR - Fluent Reflection in Java jOOR is a very simple fluent API that gives access to your Java Class structures in a more intuitive way. The JDK's reflection APIs are hard and verbose to use. Other languages have much simpler constructs to access type meta information at runtime. Let us make Java reflection better.
High performance Java reflection
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.