import{_ as s,o as n,c as a,e as l}from"./app.3cb5b3a5.js";const p={},o=l(`

\u5C55\u671B\u672A\u6765

\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

\u672A\u6765\u7684\u8BA1\u5212

\u8FD9\u91CC\u6536\u5F55\u4E86 YukiReflection \u53EF\u80FD\u4F1A\u5728\u540E\u671F\u6DFB\u52A0\u7684\u529F\u80FD\u3002

\u81EA\u52A8\u751F\u6210\u53CD\u5C04\u4EE3\u7801

\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

`,19),e=[o];function c(t,r){return n(),a("div",null,e)}const y=s(p,[["render",c],["__file","future.html.vue"]]);export{y as default};