Introduction

KavaRef is a modern Java reflection API implemented using Kotlin.

Background

This is a modern Java reflection API implemented using Kotlin, designed to provide a cleaner and easier-to-use API while retaining the power of Java reflection.

The project icon is designed by MaiTungTMopen in new window and is named from KotlinJavaReflection, meaning Java reflection implemented using Kotlin.

It was first born in the YukiHookAPIopen in new window, and was later decoupled into the YukiReflectionopen in new window project.

As you can see, KavaRef is now a completely new set of APIs, completely refactored with the design ideas of YukiReflection, which has no affiliation and will replace YukiReflection as a new reflection solution.

If you are using YukiReflection or the YukiHookAPI project related to it, you can refer to here to migrate the reflection API to KavaRef.

Usage

KavaRef is built with Kotlin lambda syntax in a Java Builder style.

It can replace Java's native Reflection APIopen in new window and implement a more complete reflection solution with a more human-friendly language.

Skill Requirements

You should be proficient with Java's native reflection APIs, understand Java's class loading mechanisms, bytecode structures, and how they are used in Kotlin (if you are using Kotlin).

Language Requirement

It is recommended to use Kotlin. API composition also supports Java, but in pure Java projects, KavaRef may not be able to demonstrate its full functionality and syntactic sugar advantages.

All the demo sample code in the documentation will be described using Kotlin first. If you don't know how to use Kotlin at all, you may not be able to fully experience and use the functionality of KavaRef.

Contribution

The maintenance of this project is inseparable from the support and contributions of all developers.

This project is currently in its early stages, and there may still be some problems or lack of functions you need.

If possible, feel free to submit a PR to contribute features you think are needed to this project or go to GitHub Issuesopen in new window to make suggestions to us.