Files
YukiReflection/en/about/future.html
github-actions[bot] e9fb0169d8 Deploy to GitHub pages
2025-06-25 11:38:33 +00:00

136 lines
66 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="VuePress 2.0.0-rc.0">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
<link rel="icon" href="/YukiReflection/images/logo.png"><title>Looking for Future | Yuki Reflection</title><meta name="description" content="An efficient Reflection API for Java and Android built in Kotlin">
<link rel="preload" href="/YukiReflection/assets/style-HJevwQGJ.css" as="style"><link rel="stylesheet" href="/YukiReflection/assets/style-HJevwQGJ.css">
<link rel="modulepreload" href="/YukiReflection/assets/app-Un_zyw_U.js"><link rel="modulepreload" href="/YukiReflection/assets/future.html-AGWEVq2N.js"><link rel="modulepreload" href="/YukiReflection/assets/future.html-ejs_q7b1.js">
<link rel="prefetch" href="/YukiReflection/assets/index.html-jSt2tOGZ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/index.html-TK3hZBTT.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/index.html-pjzas0AJ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/about.html-esShpFQo.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/changelog.html-P4l7oFKE.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/contacts.html-iNJWt8MD.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/features.html-VU512ZaF.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-s4QryDyD.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-example.html-VAmv0BWX.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-exception.html-PveSaoT0.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-IgXFm8EJ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/quick-start.html-QOp7B8w8.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/about.html-a0D_ZdrJ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/changelog.html-2qAsS2UI.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/contacts.html-0oJDLEja.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/future.html-wqMG_3q5.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/features.html-SzPF_JgZ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-8Cjdx1AU.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-example.html-9cblKm8X.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-exception.html-jnFpFUq0.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html--XHi8faE.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/quick-start.html-n1c0Zazn.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YukiReflection.html-wyZOo9RJ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YukiReflection.html-d5WSFYcp.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CurrentClass.html-aIvFMoGD.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GenericClass.html--Lql8mDe.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariousClass.html-OGR6uO-Q.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ReflectionFactory.html-NQiaTVE5.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YLog.html-tEpiJE43.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CurrentClass.html-sE3zJIrm.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GenericClass.html-TJqKXlog.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariousClass.html-27EKagHz.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ReflectionFactory.html-fNUb_WhR.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YLog.html-OO_nxYSS.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/BaseFinder.html-72Iq-6f5.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DexClassFinder.html-CuqfiW90.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorFinder.html-WBhuluIb.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldFinder.html-SCPPTVS5.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodFinder.html-rrxJN8Pm.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ComponentTypeFactory.html-MSABhHlb.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GraphicsTypeFactory.html-DXquzZdf.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ViewTypeFactory.html-BlJgDBiK.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DefinedTypeFactory.html-OIQVLnGM.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariableTypeFactory.html-aKba1Svi.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/BaseFinder.html-ALJEe03K.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DexClassFinder.html-UYJDQWR2.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorFinder.html-_FNxdKVs.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldFinder.html-zKtt89hV.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodFinder.html-F3Nq1ta1.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ComponentTypeFactory.html-986b1Uh7.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GraphicsTypeFactory.html-LLClnUt2.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ViewTypeFactory.html-tP76iwqq.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DefinedTypeFactory.html-mINnsZd9.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariableTypeFactory.html-z7CY3MNH.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CountRules.html-qumSB8gY.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ModifierRules.html-n9h96LhZ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/NameRules.html-jW6PpEoY.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ObjectRules.html-eckIsmZq.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorRules.html-bV3tMIM8.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldRules.html-J5ZPIA8O.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRules.html-s0L0dO7U.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodRules.html-wOHbNM4H.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CountRules.html-ePjFzVT5.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ModifierRules.html-w8NPlak8.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/NameRules.html-FTNuImB7.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ObjectRules.html-Nqx6ijx7.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorRules.html-DYOYWZvf.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldRules.html-IMr78QcL.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRules.html-cNDASndV.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodRules.html-aSRU9IHr.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRulesResult.html-2SlL_c8V.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRulesResult.html-4XM5SrCj.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/404.html-6Yl8cQE3.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/index.html-OaTtftmv.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/index.html-seflpP7l.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/index.html-QcMSdla7.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/about.html-nADqWWz2.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/changelog.html-W-b8mvsm.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/contacts.html-C8LAv6xu.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/features.html-UPAlRPRa.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-CFF_AMaM.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-example.html-X3fvd5da.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-exception.html-ngpL7qd8.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-eQwepd-K.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/quick-start.html-uujte6L-.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/about.html--vPvG7gm.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/changelog.html-rt4TZTG3.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/contacts.html-6Q6LT5CM.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/future.html-qjL5dEhQ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/features.html-tu9AQPUC.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-MnXIMn-y.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-example.html-4yu62_kW.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/api-exception.html-AQNocG1O.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/home.html-Y4O_zhtP.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/quick-start.html-EP-s2HU3.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YukiReflection.html-9kfBlewr.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YukiReflection.html-N0eAU_3r.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CurrentClass.html-ZCLUCXCq.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GenericClass.html-hROzteRj.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariousClass.html-lYu6ahQy.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ReflectionFactory.html-e_EIy99E.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YLog.html-BiSru-dl.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CurrentClass.html-iDLdKTRl.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GenericClass.html-VZQ2Br0U.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariousClass.html-N1_WPt67.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ReflectionFactory.html-4bon6h3y.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/YLog.html-HMp0r_nP.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/BaseFinder.html-DcynkNRV.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DexClassFinder.html-oDUXm983.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorFinder.html-HZlOD583.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldFinder.html-CaQR3qZR.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodFinder.html-9zE4fEos.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ComponentTypeFactory.html-FeM6EBQs.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GraphicsTypeFactory.html-DptpdaTU.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ViewTypeFactory.html-a4OWMkml.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DefinedTypeFactory.html-IT5sdpCR.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariableTypeFactory.html-L20wMFG_.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/BaseFinder.html-bAM0SzKR.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DexClassFinder.html-tnGJIsCX.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorFinder.html-SqtdCIul.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldFinder.html-_oWPO7Eh.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodFinder.html-dHpCygp2.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ComponentTypeFactory.html-Wy4oe3qj.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/GraphicsTypeFactory.html-xL-hvwWg.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ViewTypeFactory.html-0slISbaY.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/DefinedTypeFactory.html-EYV1yl_b.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/VariableTypeFactory.html-vuqEkE15.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CountRules.html-oJp6KY1O.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ModifierRules.html-EHCxf6eb.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/NameRules.html-6iq8oL-B.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ObjectRules.html-EZNQwBuT.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorRules.html-HoOS6Lpr.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldRules.html-tbZ9y4HH.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRules.html-wPy0xHct.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodRules.html-0hkKQ1Lm.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/CountRules.html-z8W_vwvZ.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ModifierRules.html-4vu7ZiXc.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/NameRules.html-9btOATID.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ObjectRules.html-qlYFsawY.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/ConstructorRules.html-b9arB2u-.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/FieldRules.html-m_-yonQY.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRules.html-1gLEBvW8.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MethodRules.html-SViWQxO9.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRulesResult.html-rcTdNW24.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/MemberRulesResult.html-N7SQp4D9.js" as="script"><link rel="prefetch" href="/YukiReflection/assets/404.html-GYBVbwsB.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="theme-container"><!--[--><header class="navbar"><div class="toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/YukiReflection/en/" class=""><img class="logo" src="/YukiReflection/images/logo.png" alt="Yuki Reflection"><span class="site-name can-hide">Yuki Reflection</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Navigation"><span class="title">Navigation</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Navigation"><span class="title">Navigation</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>Get Started</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/guide/home" class="" aria-label="Introduce"><!--[--><!--]--> Introduce <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/guide/quick-start" class="" aria-label="Quick Start"><!--[--><!--]--> Quick Start <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>Configs</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/config/api-example" class="" aria-label="API Basic Configs"><!--[--><!--]--> API Basic Configs <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/config/api-exception" class="" aria-label="API Exception Handling"><!--[--><!--]--> API Exception Handling <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>API Document</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/home" class="" aria-label="Document Introduction"><!--[--><!--]--> Document Introduction <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/YukiReflection" class="" aria-label="Public API"><!--[--><!--]--> Public API <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/features" class="" aria-label="Features"><!--[--><!--]--> Features <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>About</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/changelog" class="" aria-label="Changelog"><!--[--><!--]--> Changelog <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/future" class="router-link-active" aria-label="Looking for Future"><!--[--><!--]--> Looking for Future <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/contacts" class="" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/about" class="" aria-label="About this Document"><!--[--><!--]--> About this Document <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><a href="/YukiReflection/en/about/contacts" class="" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">English (US)</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">English (US)</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/YukiReflection/en/about/future.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/YukiReflection/zh-cn/about/future.html" class="" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/HighCapable/YukiReflection" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-color-mode-button" title="toggle color mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><form class="search-box" role="search"><input type="search" placeholder="Search" autocomplete="off" spellcheck="false" value><!----></form></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Navigation"><span class="title">Navigation</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Navigation"><span class="title">Navigation</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>Get Started</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/guide/home" class="" aria-label="Introduce"><!--[--><!--]--> Introduce <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/guide/quick-start" class="" aria-label="Quick Start"><!--[--><!--]--> Quick Start <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>Configs</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/config/api-example" class="" aria-label="API Basic Configs"><!--[--><!--]--> API Basic Configs <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/config/api-exception" class="" aria-label="API Exception Handling"><!--[--><!--]--> API Exception Handling <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>API Document</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/home" class="" aria-label="Document Introduction"><!--[--><!--]--> Document Introduction <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/YukiReflection" class="" aria-label="Public API"><!--[--><!--]--> Public API <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/api/features" class="" aria-label="Features"><!--[--><!--]--> Features <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>About</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/changelog" class="" aria-label="Changelog"><!--[--><!--]--> Changelog <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/future" class="router-link-active" aria-label="Looking for Future"><!--[--><!--]--> Looking for Future <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/contacts" class="" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/en/about/about" class="" aria-label="About this Document"><!--[--><!--]--> About this Document <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><a href="/YukiReflection/en/about/contacts" class="" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">English (US)</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">English (US)</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/YukiReflection/en/about/future.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/YukiReflection/zh-cn/about/future.html" class="" aria-label="简体中文"><!--[--><!--]--> 简体中文 <!--[--><!--]--></a></li><!--]--></ul></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/HighCapable/YukiReflection" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Get Started <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/en/guide/home.html" class="sidebar-item" aria-label="Introduce"><!--[--><!--]--> Introduce <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/guide/quick-start.html" class="sidebar-item" aria-label="Quick Start"><!--[--><!--]--> Quick Start <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Configs <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/en/config/api-example.html" class="sidebar-item" aria-label="API Basic Configs"><!--[--><!--]--> API Basic Configs <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/config/api-exception.html" class="sidebar-item" aria-label="API Exception Handling"><!--[--><!--]--> API Exception Handling <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">API Document <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/en/api/home.html" class="sidebar-item" aria-label="Document Introduce"><!--[--><!--]--> Document Introduce <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item collapsible">Public API  <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/YukiReflection.html" class="sidebar-item" aria-label="YukiReflection - object"><!--[--><!--]--> YukiReflection - object <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/type/android/ComponentTypeFactory.html" class="sidebar-item" aria-label="ComponentTypeFactory - kt"><!--[--><!--]--> ComponentTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.html" class="sidebar-item" aria-label="GraphicsTypeFactory - kt"><!--[--><!--]--> GraphicsTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/type/android/ViewTypeFactory.html" class="sidebar-item" aria-label="ViewTypeFactory - kt"><!--[--><!--]--> ViewTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/type/java/VariableTypeFactory.html" class="sidebar-item" aria-label="VariableTypeFactory - kt"><!--[--><!--]--> VariableTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.html" class="sidebar-item" aria-label="DefinedTypeFactory - kt"><!--[--><!--]--> DefinedTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/log/YLog.html" class="sidebar-item" aria-label="YLog - object"><!--[--><!--]--> YLog - object <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/factory/ReflectionFactory.html" class="sidebar-item" aria-label="ReflectionFactory - kt"><!--[--><!--]--> ReflectionFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.html" class="sidebar-item" aria-label="MethodFinder - class"><!--[--><!--]--> MethodFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.html" class="sidebar-item" aria-label="ConstructorFinder - class"><!--[--><!--]--> ConstructorFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.html" class="sidebar-item" aria-label="FieldFinder - class"><!--[--><!--]--> FieldFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.html" class="sidebar-item" aria-label="DexClassFinder - class"><!--[--><!--]--> DexClassFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/rules/result/MemberRulesResult.html" class="sidebar-item" aria-label="MemberRulesResult - class"><!--[--><!--]--> MemberRulesResult - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/rules/MemberRules.html" class="sidebar-item" aria-label="MemberRules - class"><!--[--><!--]--> MemberRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/rules/FieldRules.html" class="sidebar-item" aria-label="FieldRules - class"><!--[--><!--]--> FieldRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/rules/MethodRules.html" class="sidebar-item" aria-label="MethodRules - class"><!--[--><!--]--> MethodRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/classes/rules/ConstructorRules.html" class="sidebar-item" aria-label="ConstructorRules - class"><!--[--><!--]--> ConstructorRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/base/BaseFinder.html" class="sidebar-item" aria-label="BaseFinder - class"><!--[--><!--]--> BaseFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/base/rules/CountRules.html" class="sidebar-item" aria-label="CountRules - class"><!--[--><!--]--> CountRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/base/rules/ModifierRules.html" class="sidebar-item" aria-label="ModifierRules - class"><!--[--><!--]--> ModifierRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/base/rules/NameRules.html" class="sidebar-item" aria-label="NameRules - class"><!--[--><!--]--> NameRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/finder/base/rules/ObjectRules.html" class="sidebar-item" aria-label="ObjectRules - class"><!--[--><!--]--> ObjectRules - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/bean/VariousClass.html" class="sidebar-item" aria-label="VariousClass - class"><!--[--><!--]--> VariousClass - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/bean/CurrentClass.html" class="sidebar-item" aria-label="CurrentClass - class"><!--[--><!--]--> CurrentClass - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/api/public/com/highcapable/yukireflection/bean/GenericClass.html" class="sidebar-item" aria-label="GenericClass - class"><!--[--><!--]--> GenericClass - class <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><a href="/YukiReflection/en/api/features.html" class="sidebar-item" aria-label="Features"><!--[--><!--]--> Features <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading active collapsible">About <span class="down arrow"></span></p><ul style="" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/en/about/changelog.html" class="sidebar-item" aria-label="Changelog"><!--[--><!--]--> Changelog <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/YukiReflection/en/about/future.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="Looking for Future"><!--[--><!--]--> Looking for Future <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/YukiReflection/en/about/future.html#future-plans" class="router-link-active router-link-exact-active sidebar-item" aria-label="Future Plans"><!--[--><!--]--> Future Plans <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/YukiReflection/en/about/future.html#automatically-generate-reflection-code" class="router-link-active router-link-exact-active sidebar-item" aria-label="Automatically Generate Reflection Code"><!--[--><!--]--> Automatically Generate Reflection Code <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/YukiReflection/en/about/future.html#automatically-generate-directly-called-class-objects" class="router-link-active router-link-exact-active sidebar-item" aria-label="Automatically Generate Directly Called Class Objects"><!--[--><!--]--> Automatically Generate Directly Called Class Objects <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><a href="/YukiReflection/en/about/contacts.html" class="sidebar-item" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/en/about/about.html" class="sidebar-item" aria-label="About This Document"><!--[--><!--]--> About This Document <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><!--]--><div><h1 id="looking-for-future" tabindex="-1"><a class="header-anchor" href="#looking-for-future" aria-hidden="true">#</a> Looking for Future</h1><blockquote><p>The future is bright and uncertain, let us look forward to the future development space of <code>YukiReflection</code>.</p></blockquote><h2 id="future-plans" tabindex="-1"><a class="header-anchor" href="#future-plans" aria-hidden="true">#</a> Future Plans</h2><blockquote><p>Features that <code>YukiReflection</code> may add later are included here.</p></blockquote><h3 id="automatically-generate-reflection-code" tabindex="-1"><a class="header-anchor" href="#automatically-generate-reflection-code" aria-hidden="true">#</a> Automatically Generate Reflection Code</h3><p>Use <code>stub</code> to create a Kotlin class, and declare the parameters in it, as well as its different states in each version.</p><p>For example, the Java class below is the target class we need to reflect.</p><blockquote><p>The following example</p></blockquote><div class="language-java" data-ext="java"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">package</span><span style="color:#ADBAC7;"> com.example.test;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F47067;">public</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyClass</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> String</span><span style="color:#F69D50;"> </span><span style="color:#ADBAC7;">myField</span><span style="color:#F69D50;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;test&quot;</span><span style="color:#ADBAC7;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">public</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MyClass</span><span style="color:#ADBAC7;">() {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//...</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> String </span><span style="color:#DCBDFB;">myMethod1</span><span style="color:#ADBAC7;">(String </span><span style="color:#F69D50;">var1</span><span style="color:#ADBAC7;">, </span><span style="color:#F47067;">int</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">var2</span><span style="color:#ADBAC7;">) {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//...</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">void</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">myMethod2</span><span style="color:#ADBAC7;">() {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//...</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">void</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">myMethod3</span><span style="color:#ADBAC7;">(String </span><span style="color:#F69D50;">var1</span><span style="color:#ADBAC7;">) {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">//...</span></span>
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre></div><p>Through the existing usage of the current API, this class can be called reflectively in the following way.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">classOf</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">MyClass</span><span style="color:#ADBAC7;">&gt;().</span><span style="color:#DCBDFB;">buildOf</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">current</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myField</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">value</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">field</span><span style="color:#ADBAC7;"> { name </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;myField&quot;</span><span style="color:#ADBAC7;"> }.</span><span style="color:#DCBDFB;">string</span><span style="color:#ADBAC7;">()</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod1</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> methodValue </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">method</span><span style="color:#ADBAC7;"> { name </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;myMethod1&quot;</span><span style="color:#ADBAC7;"> }.</span><span style="color:#DCBDFB;">string</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;test&quot;</span><span style="color:#ADBAC7;">, </span><span style="color:#6CB6FF;">0</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod2</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">method</span><span style="color:#ADBAC7;"> { name </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;myMethod2&quot;</span><span style="color:#ADBAC7;"> }.</span><span style="color:#DCBDFB;">call</span><span style="color:#ADBAC7;">()</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod3</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">method</span><span style="color:#ADBAC7;"> { name </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;myMethod3&quot;</span><span style="color:#ADBAC7;"> }.</span><span style="color:#DCBDFB;">call</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;test&quot;</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The function to be implemented at present can be directly defined as the following Kotlin class using the reflection function.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">package</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">com.example.test</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F69D50;">@ReflectClass</span></span>
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyClass</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">@ReflectField</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myField: </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">fieldValueOf</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;none&quot;</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">@ReflectMethod</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">myMethod1</span><span style="color:#ADBAC7;">(var1: </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;">, var2: </span><span style="color:#F69D50;">Int</span><span style="color:#ADBAC7;">): </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">methodReturnValueOf</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;none&quot;</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">@ReflectMethod</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">myMethod2</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MethodReturnType.Unit</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">@ReflectMethod</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">myMethod3</span><span style="color:#ADBAC7;">(var1: </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;">) </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MethodReturnType.Unit</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then we can directly call this defined Kotlin class to implement the reflection function, and the API will automatically generate the reflection code according to the annotation.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">MyClass</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">also</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myField</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">value</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> it.myField</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod1</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> methodValue </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> it.</span><span style="color:#DCBDFB;">myMethod1</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;test&quot;</span><span style="color:#ADBAC7;">, </span><span style="color:#6CB6FF;">0</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod2</span></span>
<span class="line"><span style="color:#ADBAC7;"> it.</span><span style="color:#DCBDFB;">myMethod2</span><span style="color:#ADBAC7;">()</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Call myMethod3</span></span>
<span class="line"><span style="color:#ADBAC7;"> it.</span><span style="color:#DCBDFB;">myMethod3</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">&quot;test&quot;</span><span style="color:#ADBAC7;">)</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>The above functions may change after the actual release, and the functions of the actual version shall prevail.</p></div><h3 id="automatically-generate-directly-called-class-objects" tabindex="-1"><a class="header-anchor" href="#automatically-generate-directly-called-class-objects" aria-hidden="true">#</a> Automatically Generate Directly Called Class Objects</h3><p>In Kotlin, the way to represent Java class objects is <code>YourObject::class.java</code>.</p><p>This writing method is usually very long and will be very unsightly when used extensively during reflection.</p><p>In the existing version, we have built-in commonly used <code>Class</code> objects, but this will increase the size of dependencies, and these objects may not be used in most cases.</p><p>For example, <code>StringClass</code>, <code>IntType</code>, etc., these objects are built in <code>YukiReflection</code>.</p><p>So we plan to add a function in the future, which can use <code>properties</code> to create a list of <code>Class</code> objects that need to be generated, and generate these <code>Class</code> objects in sequence through the Gradle plugin.</p><p><code>Class</code> objects of primitive types such as those mentioned above will still be built into <code>YukiReflection</code>, and the remaining <code>Class</code> objects need to be defined by yourself.</p><p>The generated name specification is <strong>Class Name + Class</strong>.</p><p>In order to prevent package name conflicts, you can control the sub-package name of the generated <code>Class</code> object.</p><p>In the configuration file, you don&#39;t need to add <code>Class</code> as a suffix.</p><p>You can define the generated root package name in the Gradle plugin, which defaults to <code>com.highcapable.yukireflection.generated.classes</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;"># The most basic way to define is to write the name directly</span></span>
<span class="line"><span style="color:#768390;"># Will be generated to com.highcapable.yukireflection.generated.classes.BundleClass</span></span>
<span class="line"><span style="color:#F47067;">android.os.Bundle</span><span style="color:#ADBAC7;">=Bundle</span></span>
<span class="line"><span style="color:#768390;"># You can use the &quot;.&quot; form in front to define the prefixed subpackage name</span></span>
<span class="line"><span style="color:#768390;"># For example, we want to define this class to the desired package name</span></span>
<span class="line"><span style="color:#768390;"># Will be generated to com.highcapable.yukireflection.generated.classes.myandroid.myos.BundleClass</span></span>
<span class="line"><span style="color:#F47067;">android.os.Bundle</span><span style="color:#ADBAC7;">=myandroid.myos.Bundle</span></span>
<span class="line"><span style="color:#768390;"># You can also not fill in the key value content, which will use the key value name</span></span>
<span class="line"><span style="color:#768390;"># as the defined package name and class name</span></span>
<span class="line"><span style="color:#768390;"># Will be generated to com.highcapable.yukireflection.generated.classes.android.os.BundleClass</span></span>
<span class="line"><span style="color:#ADBAC7;">android.os.Bundle</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The approximate code form of the <code>Class</code> object generated by the above method is as follows.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">package</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">com.highcapable.yukireflection.generated.classes.android.os</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used with default ClassLoader</span></span>
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> BundleClass: </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;*&gt; </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;android.os.Bundle&quot;</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">toClass</span><span style="color:#ADBAC7;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used when ClassLoader is specified</span></span>
<span class="line"><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">BundleClass</span><span style="color:#ADBAC7;">(loader: </span><span style="color:#F69D50;">ClassLoader</span><span style="color:#ADBAC7;">): </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;*&gt; </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;android.os.Bundle&quot;</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">toClass</span><span style="color:#ADBAC7;">(loader)</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Maybe this <code>Class</code> may not be obtained in some cases.</p><p>In this case, you can refer to the following configuration method.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;"># Add &quot;?&quot; after the key value to define a nullable Class object</span></span>
<span class="line"><span style="color:#ADBAC7;">android.os.Bundle?</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>The approximate code form of the <code>Class</code> object generated by the above method is as follows.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">package</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">com.highcapable.yukireflection.generated.classes.android.os</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used with default ClassLoader</span></span>
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> BundleClass: </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;*&gt;? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;android.os.Bundle&quot;</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">toClassOrNull</span><span style="color:#ADBAC7;">()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used when ClassLoader is specified</span></span>
<span class="line"><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">BundleClass</span><span style="color:#ADBAC7;">(loader: </span><span style="color:#F69D50;">ClassLoader</span><span style="color:#ADBAC7;">): </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;*&gt;? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;android.os.Bundle&quot;</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">toClassOrNull</span><span style="color:#ADBAC7;">(loader)</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If this <code>Class</code> object can be referenced by direct call, you can refer to the following configuration method at this time.</p><blockquote><p>The following example</p></blockquote><div class="language-properties line-numbers-mode" data-ext="properties"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;"># Add &quot;!!&quot; after the key value to define a Class object that can be called directly</span></span>
<span class="line"><span style="color:#ADBAC7;">android.os.Bundle!!</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>The approximate code form of the <code>Class</code> object generated by the above method is as follows.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">package</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">com.highcapable.yukireflection.generated.classes.android.os</span></span>
<span class="line"></span>
<span class="line"><span style="color:#F47067;">import</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">android.os.Bundle</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used with default ClassLoader</span></span>
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> BundleClass: </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">&gt; </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">classOf</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">&gt;()</span></span>
<span class="line"></span>
<span class="line"><span style="color:#768390;">// Used when ClassLoader is specified</span></span>
<span class="line"><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">BundleClass</span><span style="color:#ADBAC7;">(loader: </span><span style="color:#F69D50;">ClassLoader</span><span style="color:#ADBAC7;">): </span><span style="color:#F69D50;">Class</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">&gt; </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">classOf</span><span style="color:#ADBAC7;">&lt;</span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">&gt;(loader)</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>With the generated <code>Class</code> object, we can happily use <code>YukiReflection</code> for reflection.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">method</span><span style="color:#ADBAC7;"> {</span></span>
<span class="line"><span style="color:#ADBAC7;"> name </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">&quot;onCreate&quot;</span></span>
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">param</span><span style="color:#ADBAC7;">(BundleClass)</span></span>
<span class="line"><span style="color:#ADBAC7;">}</span></span>
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>The above functions may change after the actual release, and the functions of the actual version shall prevail.</p></div></div><!--[--><!--]--></div><footer class="page-meta"><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/HighCapable/YukiReflection/edit/master/docs-source/src/en/about/future.md" rel="noopener noreferrer" target="_blank" aria-label="Edit this page on GitHub"><!--[--><!--]--> Edit this page on GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: qzmmcn@163.com">fankesyooni</span><!----><!--]--><!--]--></span></div></footer><nav class="page-nav"><p class="inner"><span class="prev"><a href="/YukiReflection/en/about/changelog.html" class="" aria-label="Changelog"><!--[--><!--]--> Changelog <!--[--><!--]--></a></span><span class="next"><a href="/YukiReflection/en/about/contacts.html" class="" aria-label="Contact Us"><!--[--><!--]--> Contact Us <!--[--><!--]--></a></span></p></nav><!--[--><!--]--></main><!--]--></div><!----><div class="deprecated-banner" data-v-25c96c98> YukiReflection is deprecated, Start trying <a href="https://github.com/HighCapable/KavaRef" target="_blank" rel="noopener" data-v-25c96c98>KavaRef</a> now!  YukiReflection 已被弃用,立即尝试 <a href="https://github.com/HighCapable/KavaRef/blob/main/README-zh-CN.md" target="_blank" rel="noopener" data-v-25c96c98>KavaRef</a> 吧! </div><!--]--></div>
<script type="module" src="/YukiReflection/assets/app-Un_zyw_U.js" defer></script>
</body>
</html>