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

135 lines
65 KiB
HTML
Raw Permalink 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN">
<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>展望未来 | Yuki Reflection</title><meta name="description" content="一个使用 Kotlin 构建的用于 Java 和 Android 平台高效反射 API">
<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-qjL5dEhQ.js"><link rel="modulepreload" href="/YukiReflection/assets/future.html-wqMG_3q5.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/future.html-AGWEVq2N.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/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/future.html-ejs_q7b1.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/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/zh-cn/" 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="导航"><span class="title">导航</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="导航"><span class="title">导航</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>入门</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/guide/home" class="" aria-label="介绍"><!--[--><!--]--> 介绍 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/guide/quick-start" class="" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>配置</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/config/api-example" class="" aria-label="API 基本配置"><!--[--><!--]--> API 基本配置 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/config/api-exception" class="" aria-label="API 异常处理"><!--[--><!--]--> API 异常处理 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>API 文档</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/home" class="" aria-label="文档介绍"><!--[--><!--]--> 文档介绍 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/YukiReflection" class="" aria-label="Public API"><!--[--><!--]--> Public API <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/features" class="" aria-label="功能介绍"><!--[--><!--]--> 功能介绍 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>关于</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/changelog" class="" aria-label="更新日志"><!--[--><!--]--> 更新日志 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/future" class="router-link-active" aria-label="展望未来"><!--[--><!--]--> 展望未来 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/contacts" class="" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/about" class="" aria-label="关于此文档"><!--[--><!--]--> 关于此文档 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><a href="/YukiReflection/zh-cn/about/contacts" class="" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></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">简体中文 (CN)</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">简体中文 (CN)</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/YukiReflection/en/about/future.html" class="" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html" class="router-link-active router-link-exact-active router-link-active" 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">在新窗口中打开</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-color-mode-button" title="切换颜色模式"><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="搜索" 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="导航"><span class="title">导航</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="导航"><span class="title">导航</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>入门</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/guide/home" class="" aria-label="介绍"><!--[--><!--]--> 介绍 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/guide/quick-start" class="" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>配置</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/config/api-example" class="" aria-label="API 基本配置"><!--[--><!--]--> API 基本配置 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/config/api-exception" class="" aria-label="API 异常处理"><!--[--><!--]--> API 异常处理 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>API 文档</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/home" class="" aria-label="文档介绍"><!--[--><!--]--> 文档介绍 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/YukiReflection" class="" aria-label="Public API"><!--[--><!--]--> Public API <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/api/features" class="" aria-label="功能介绍"><!--[--><!--]--> 功能介绍 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><li class="navbar-dropdown-item"><!--[--><h4 class="navbar-dropdown-subtitle"><span>关于</span></h4><ul class="navbar-dropdown-subitem-wrapper"><!--[--><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/changelog" class="" aria-label="更新日志"><!--[--><!--]--> 更新日志 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/future" class="router-link-active" aria-label="展望未来"><!--[--><!--]--> 展望未来 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/contacts" class="" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></a></li><li class="navbar-dropdown-subitem"><a href="/YukiReflection/zh-cn/about/about" class="" aria-label="关于此文档"><!--[--><!--]--> 关于此文档 <!--[--><!--]--></a></li><!--]--></ul><!--]--></li><!--]--></ul></div></div><div class="navbar-item"><a href="/YukiReflection/zh-cn/about/contacts" class="" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></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">简体中文 (CN)</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">简体中文 (CN)</span><span class="right arrow"></span></button><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a href="/YukiReflection/en/about/future.html" class="" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html" class="router-link-active router-link-exact-active router-link-active" 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">在新窗口中打开</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">入门 <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/zh-cn/guide/home.html" class="sidebar-item" aria-label="介绍"><!--[--><!--]--> 介绍 <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/guide/quick-start.html" class="sidebar-item" aria-label="快速开始"><!--[--><!--]--> 快速开始 <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">配置 <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/zh-cn/config/api-example.html" class="sidebar-item" aria-label="API 基本配置"><!--[--><!--]--> API 基本配置 <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/config/api-exception.html" class="sidebar-item" aria-label="API 异常处理"><!--[--><!--]--> API 异常处理 <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">API 文档 <span class="right arrow"></span></p><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/zh-cn/api/home.html" class="sidebar-item" aria-label="文档介绍"><!--[--><!--]--> 文档介绍 <!--[--><!--]--></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/zh-cn/api/public/com/highcapable/yukireflection/YukiReflection.html" class="sidebar-item" aria-label="YukiReflection - object"><!--[--><!--]--> YukiReflection - object <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/type/android/ComponentTypeFactory.html" class="sidebar-item" aria-label="ComponentTypeFactory - kt"><!--[--><!--]--> ComponentTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/type/android/GraphicsTypeFactory.html" class="sidebar-item" aria-label="GraphicsTypeFactory - kt"><!--[--><!--]--> GraphicsTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/type/android/ViewTypeFactory.html" class="sidebar-item" aria-label="ViewTypeFactory - kt"><!--[--><!--]--> ViewTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/type/java/VariableTypeFactory.html" class="sidebar-item" aria-label="VariableTypeFactory - kt"><!--[--><!--]--> VariableTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/type/defined/DefinedTypeFactory.html" class="sidebar-item" aria-label="DefinedTypeFactory - kt"><!--[--><!--]--> DefinedTypeFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/log/YLog.html" class="sidebar-item" aria-label="YLog - object"><!--[--><!--]--> YLog - object <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/factory/ReflectionFactory.html" class="sidebar-item" aria-label="ReflectionFactory - kt"><!--[--><!--]--> ReflectionFactory - kt <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/finder/members/MethodFinder.html" class="sidebar-item" aria-label="MethodFinder - class"><!--[--><!--]--> MethodFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/finder/members/ConstructorFinder.html" class="sidebar-item" aria-label="ConstructorFinder - class"><!--[--><!--]--> ConstructorFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/finder/members/FieldFinder.html" class="sidebar-item" aria-label="FieldFinder - class"><!--[--><!--]--> FieldFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/finder/classes/DexClassFinder.html" class="sidebar-item" aria-label="DexClassFinder - class"><!--[--><!--]--> DexClassFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/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/zh-cn/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/zh-cn/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/zh-cn/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/zh-cn/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/zh-cn/api/public/com/highcapable/yukireflection/finder/base/BaseFinder.html" class="sidebar-item" aria-label="BaseFinder - class"><!--[--><!--]--> BaseFinder - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/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/zh-cn/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/zh-cn/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/zh-cn/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/zh-cn/api/public/com/highcapable/yukireflection/bean/VariousClass.html" class="sidebar-item" aria-label="VariousClass - class"><!--[--><!--]--> VariousClass - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/api/public/com/highcapable/yukireflection/bean/CurrentClass.html" class="sidebar-item" aria-label="CurrentClass - class"><!--[--><!--]--> CurrentClass - class <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/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/zh-cn/api/features.html" class="sidebar-item" aria-label="功能介绍"><!--[--><!--]--> 功能介绍 <!--[--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="sidebar-item sidebar-heading active collapsible">关于 <span class="down arrow"></span></p><ul style="" class="sidebar-item-children"><!--[--><li><a href="/YukiReflection/zh-cn/about/changelog.html" class="sidebar-item" aria-label="更新日志"><!--[--><!--]--> 更新日志 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html" class="router-link-active router-link-exact-active router-link-active sidebar-item active" aria-label="展望未来"><!--[--><!--]--> 展望未来 <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html#未来的计划" class="router-link-active router-link-exact-active sidebar-item" aria-label="未来的计划"><!--[--><!--]--> 未来的计划 <!--[--><!--]--></a><ul style="" class="sidebar-item-children"><!--[--><li><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html#自动生成反射代码" class="router-link-active router-link-exact-active sidebar-item" aria-label="自动生成反射代码"><!--[--><!--]--> 自动生成反射代码 <!--[--><!--]--></a><!----></li><li><a aria-current="page" href="/YukiReflection/zh-cn/about/future.html#自动生成可直接调用的-class-对象" class="router-link-active router-link-exact-active sidebar-item" aria-label="自动生成可直接调用的 Class 对象"><!--[--><!--]--> 自动生成可直接调用的 Class 对象 <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><a href="/YukiReflection/zh-cn/about/contacts.html" class="sidebar-item" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></a><!----></li><li><a href="/YukiReflection/zh-cn/about/about.html" class="sidebar-item" aria-label="关于此文档"><!--[--><!--]--> 关于此文档 <!--[--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><!--]--><div><h1 id="展望未来" tabindex="-1"><a class="header-anchor" href="#展望未来" aria-hidden="true">#</a> 展望未来</h1><blockquote><p>未来是美好的,也是不确定的,让我们共同期待 <code>YukiReflection</code> 在未来的发展空间。</p></blockquote><h2 id="未来的计划" tabindex="-1"><a class="header-anchor" href="#未来的计划" aria-hidden="true">#</a> 未来的计划</h2><blockquote><p>这里收录了 <code>YukiReflection</code> 可能会在后期添加的功能。</p></blockquote><h3 id="自动生成反射代码" tabindex="-1"><a class="header-anchor" href="#自动生成反射代码" aria-hidden="true">#</a> 自动生成反射代码</h3><p>使用 <code>stub</code> 的方式创建一个 Kotlin 类,并声明其中的参数,以及其在各个版本中的不同状态。</p><p>比如下面的这个 Java 类就是我们需要反射的目标类。</p><blockquote><p>示例如下</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>通过目前 API 的现有用法可以使用如下方式反射调用这个类。</p><blockquote><p>示例如下</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;">// 调用 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;">// 调用 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;">// 调用 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;">// 调用 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>目前要实现的功能是可以使用反射功能直接定义为如下 Kotlin 类。</p><blockquote><p>示例如下</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>然后我们就可以直接调用这个定义好的 Kotlin 类来实现反射功能API 会根据注解自动生成反射代码。</p><blockquote><p>示例如下</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;">// 调用 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;">// 调用 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;">// 调用 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;">// 调用 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">小提示</p><p>以上功能可能会在实际推出后有所变化,最终以实际版本的功能为准。</p></div><h3 id="自动生成可直接调用的-class-对象" tabindex="-1"><a class="header-anchor" href="#自动生成可直接调用的-class-对象" aria-hidden="true">#</a> 自动生成可直接调用的 Class 对象</h3><p>在 Kotlin 中,表示 Java 的类对象的方式是 <code>YourObject::class.java</code>,这个写法通常会很长,在反射过程中大量使用会很不美观。</p><p>在现有版本中,我们内置了常用的 <code>Class</code> 对象,但是这会增大依赖的体积,而且大多数情况下可能都用不到这些对象。</p><p>例如 <code>StringClass</code><code>IntType</code> 等等,这些对象都是在 <code>YukiReflection</code> 中内置的。</p><p>所以我们计划在后期添加一个功能,可以使用 <code>properties</code> 的方式创建一个需要生成的 <code>Class</code> 对象列表,通过 Gradle 插件依次生成这些 <code>Class</code> 对象。</p><p>诸如上面提到的这些原始类型的 <code>Class</code> 对象依然会内置在 <code>YukiReflection</code> 中,其余的 <code>Class</code> 对象需要自行定义。</p><p>生成的名称规范为 <strong>类名 + Class</strong>,为了防止包名冲突,你可以控制生成的 <code>Class</code> 对象的子包名。</p><p>在配置文件中,你无需添加 <code>Class</code> 作为后缀。</p><p>你可以在 Gradle 插件中定义生成的根包名,默认为 <code>com.highcapable.yukireflection.generated.classes</code></p><blockquote><p>示例如下</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;"># 最基本的定义方式就是直接写名称</span></span>
<span class="line"><span style="color:#768390;"># 将会生成到 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;"># 你可以在前方使用 &quot;.&quot; 的形式来定义前置子包名</span></span>
<span class="line"><span style="color:#768390;"># 例如我们想把这个类定义到想要的包名</span></span>
<span class="line"><span style="color:#768390;"># 将会生成到 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;"># 你也可以不填写键值内容,这将使用键值名称作为定义的包名和类名</span></span>
<span class="line"><span style="color:#768390;"># 将会生成到 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></div><p>上述方式生成的 <code>Class</code> 对象的大概代码形式如下。</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;">// 在默认 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;">// 在指定 ClassLoader 的情况下使用</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>也许这个 <code>Class</code> 可能在一些情况下无法被得到,这个时候你可以参考以下配置方式。</p><blockquote><p>示例如下</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;"># 在键值后添加 &quot;?&quot; 的形式来定义可空的 Class 对象</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>上述方式生成的 <code>Class</code> 对象的大概代码形式如下。</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;">// 在默认 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;">// 在指定 ClassLoader 的情况下使用</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>如果这个 <code>Class</code> 对象能使用直接调用的方式进行引用,这个时候你可以参考以下配置方式。</p><blockquote><p>示例如下</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;"># 在键值后添加 &quot;!!&quot; 的形式来定义可直接调用的 Class 对象</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>上述方式生成的 <code>Class</code> 对象的大概代码形式如下。</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;">// 在默认 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;">// 在指定 ClassLoader 的情况下使用</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>有了生成的 <code>Class</code> 对象,我们就可以愉快地使用 <code>YukiReflection</code> 进行反射了。</p><blockquote><p>示例如下</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">小提示</p><p>以上功能可能会在实际推出后有所变化,最终以实际版本的功能为准。</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/zh-cn/about/future.md" 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">在新窗口中打开</span></span><!--[--><!--]--></a></div><div class="meta-item last-updated"><span class="meta-item-label">上次更新: </span><!----></div><div class="meta-item contributors"><span class="meta-item-label">贡献者: </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/zh-cn/about/changelog.html" class="" aria-label="更新日志"><!--[--><!--]--> 更新日志 <!--[--><!--]--></a></span><span class="next"><a href="/YukiReflection/zh-cn/about/contacts.html" class="" aria-label="联系我们"><!--[--><!--]--> 联系我们 <!--[--><!--]--></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>