import{_ as i,r,o as s,c as l,b as o,d as e,e as a,a as n}from"./app-OEUYI7Bq.js";const c={},d=o("h1",{id:"introduction",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#introduction","aria-hidden":"true"},"#"),e(" Introduction")],-1),u=o("blockquote",null,[o("p",null,[o("code",null,"KavaRef"),e(" is a modern Java reflection API implemented using Kotlin.")])],-1),h=o("h2",{id:"background",tabindex:"-1"},[o("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),e(" Background")],-1),f=o("p",null,"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.",-1),p={href:"https://github.com/Lagrio",target:"_blank",rel:"noopener noreferrer"},m=o("strong",null,"K",-1),g=o("strong",null,"avaRef",-1),b={href:"https://github.com/HighCapable/YukiHookAPI",target:"_blank",rel:"noopener noreferrer"},_={href:"https://github.com/HighCapable/YukiReflection",target:"_blank",rel:"noopener noreferrer"},k=n('<p>As you can see, <code>KavaRef</code> is now a completely new set of APIs, completely refactored with the design ideas of <code>YukiReflection</code>, which has no affiliation and will replace <code>YukiReflection</code> as a new reflection solution.</p><p>If you are using <code>YukiReflection</code> or the <code>YukiHookAPI</code> project related to it, you can refer to <a href="../config/migration">here</a> to migrate the reflection API to <code>KavaRef</code>.</p><h2 id="usage" tabindex="-1"><a class="header-anchor" href="#usage" aria-hidden="true">#</a> Usage</h2><p><code>KavaRef</code> is built with Kotlin <strong>lambda</strong> syntax in a Java Builder style.</p>',4),v={href:"https://www.oracle.com/technical-resources/articles/java/javareflection.html",target:"_blank",rel:"noopener noreferrer"},y=n('<h2 id="skill-requirements" tabindex="-1"><a class="header-anchor" href="#skill-requirements" aria-hidden="true">#</a> Skill Requirements</h2><p>You should be proficient with Java&#39;s native reflection APIs, understand Java&#39;s class loading mechanisms, bytecode structures, and how they are used in Kotlin (if you are using Kotlin).</p><h2 id="language-requirement" tabindex="-1"><a class="header-anchor" href="#language-requirement" aria-hidden="true">#</a> Language Requirement</h2><p>It is recommended to use Kotlin. API composition also supports Java, but in pure Java projects, <code>KavaRef</code> may not be able to demonstrate its full functionality and syntactic sugar advantages.</p><p>All the demo sample code in the documentation will be described using Kotlin first. If you don&#39;t know how to use Kotlin at all, you may not be able to fully experience and use the functionality of <code>KavaRef</code>.</p><h2 id="contribution" tabindex="-1"><a class="header-anchor" href="#contribution" aria-hidden="true">#</a> Contribution</h2><p>The maintenance of this project is inseparable from the support and contributions of all developers.</p><p>This project is currently in its early stages, and there may still be some problems or lack of functions you need.</p>',8),I={href:"https://github.com/HighCapable/KavaRef/issues",target:"_blank",rel:"noopener noreferrer"};function w(K,R){const t=r("ExternalLinkIcon");return s(),l("div",null,[d,u,h,f,o("p",null,[e("The project icon is designed by "),o("a",p,[e("MaiTungTM"),a(t)]),e(" and is named from "),m,e("otlinJ"),g,e("lection, meaning Java reflection implemented using Kotlin.")]),o("p",null,[e("It was first born in the "),o("a",b,[e("YukiHookAPI"),a(t)]),e(", and was later decoupled into the "),o("a",_,[e("YukiReflection"),a(t)]),e(" project.")]),k,o("p",null,[e("It can replace "),o("a",v,[e("Java's native Reflection API"),a(t)]),e(" and implement a more complete reflection solution with a more human-friendly language.")]),y,o("p",null,[e("If possible, feel free to submit a PR to contribute features you think are needed to this project or go to "),o("a",I,[e("GitHub Issues"),a(t)]),e(" to make suggestions to us.")])])}const A=i(c,[["render",w],["__file","home.html.vue"]]);export{A as default};
