import{_ as s,o as n,c as a,e as l}from"./app.3cb5b3a5.js";const p={},o=l(`
\u672A\u6765\u662F\u7F8E\u597D\u7684\uFF0C\u4E5F\u662F\u4E0D\u786E\u5B9A\u7684\uFF0C\u8BA9\u6211\u4EEC\u5171\u540C\u671F\u5F85
YukiReflection
\u5728\u672A\u6765\u7684\u53D1\u5C55\u7A7A\u95F4\u3002
\u8FD9\u91CC\u6536\u5F55\u4E86
YukiReflection
\u53EF\u80FD\u4F1A\u5728\u540E\u671F\u6DFB\u52A0\u7684\u529F\u80FD\u3002
\u4F7F\u7528 stub
\u7684\u65B9\u5F0F\u521B\u5EFA\u4E00\u4E2A Kotlin
\u7C7B\uFF0C\u5E76\u58F0\u660E\u5176\u4E2D\u7684\u53C2\u6570\uFF0C\u4EE5\u53CA\u5176\u5728\u5404\u4E2A\u7248\u672C\u4E2D\u7684\u4E0D\u540C\u72B6\u6001\u3002
\u6BD4\u5982\u4E0B\u9762\u7684\u8FD9\u4E2A Java
\u7C7B\u5C31\u662F\u6211\u4EEC\u9700\u8981\u53CD\u5C04\u7684\u76EE\u6807\u7C7B\u3002
\u793A\u4F8B\u5982\u4E0B
package com.example.test;
public class MyClass {
private String myField = "test";
public MyClass() {
// ...
}
private String myMethod1(String var1, int var2) {
// ...
}
private void myMethod2() {
// ...
}
private void myMethod3(String var1) {
// ...
}
}
\u901A\u8FC7\u76EE\u524D API \u7684\u73B0\u6709\u7528\u6CD5\u53EF\u4EE5\u4F7F\u7528\u5982\u4E0B\u65B9\u5F0F\u53CD\u5C04\u8C03\u7528\u8FD9\u4E2A\u7C7B\u3002
\u793A\u4F8B\u5982\u4E0B
classOf<MyClass>().buildOf().current {
// \u8C03\u7528 myField
val value = field { name = "myField" }.string()
// \u8C03\u7528 myMethod1
val methodValue = method { name = "myMethod1" }.string("test", 0)
// \u8C03\u7528 myMethod2
method { name = "myMethod2" }.call()
// \u8C03\u7528 myMethod3
method { name = "myMethod3" }.call("test")
}
\u76EE\u524D\u8981\u5B9E\u73B0\u7684\u529F\u80FD\u662F\u53EF\u4EE5\u4F7F\u7528\u53CD\u5C04\u529F\u80FD\u76F4\u63A5\u5B9A\u4E49\u4E3A\u5982\u4E0B Kotlin
\u7C7B\u3002
\u793A\u4F8B\u5982\u4E0B
package com.example.test
@ReflectClass
class MyClass {
@ReflectField
val myField: String = fieldValueOf("none")
@ReflectMethod
fun myMethod1(var1: String, var2: Int): String = methodReturnValueOf("none")
@ReflectMethod
fun myMethod2() = MethodReturnType.Unit
@ReflectMethod
fun myMethod3(var1: String) = MethodReturnType.Unit
}
\u7136\u540E\u6211\u4EEC\u5C31\u53EF\u4EE5\u76F4\u63A5\u8C03\u7528\u8FD9\u4E2A\u5B9A\u4E49\u597D\u7684 Kotlin
\u7C7B\u6765\u5B9E\u73B0\u53CD\u5C04\u529F\u80FD\uFF0CAPI \u4F1A\u6839\u636E\u6CE8\u89E3\u81EA\u52A8\u751F\u6210\u53CD\u5C04\u4EE3\u7801\u3002
\u793A\u4F8B\u5982\u4E0B
MyClass().also {
// \u8C03\u7528 myField
val value = it.myField
// \u8C03\u7528 myMethod1
val methodValue = it.myMethod1("test", 0)
// \u8C03\u7528 myMethod2
it.myMethod2()
// \u8C03\u7528 myMethod3
it.myMethod3("test")
}
\u5C0F\u63D0\u793A
\u4EE5\u4E0A\u529F\u80FD\u53EF\u80FD\u4F1A\u5728\u5B9E\u9645\u63A8\u51FA\u540E\u6709\u6240\u53D8\u5316\uFF0C\u6700\u7EC8\u4EE5\u5B9E\u9645\u7248\u672C\u7684\u529F\u80FD\u4E3A\u51C6\u3002