invokeMethod
val reflector = _reflectors.reflect("com.m8test.script.core.impl.JavaTypeTester")
val realParams = intArrayOf(1, 2, 3, 4)
val wrappedParams = arrayOf<Any?>(realParams)
// 调用带有参数的静态方法
reflector.invokeMethod(null, wrappedParams) {
setPublic(true)
setName("setIntArray")
setParameterTypes(arrayOf(_plugins.loadClass("[I")))
}
// 调用无参静态方法并获取返回值
_console.log("调用静态方法并获取返回值", (reflector.invokeMethod(null, null) {
setPublic(true)
setName("getIntArray")
} as IntArray).contentToString())
def reflector = $reflectors.reflect("com.m8test.script.core.impl.JavaTypeTester")
def realParams = $arrays.intArrayOf(1, 2, 3, 4)
def wrappedParams = $arrays.newArray($plugins.loadClass("java.lang.Object"), 1)
$objectWrappers.wrap(wrappedParams).set(0, realParams)
// 调用带有参数的静态方法
reflector.invokeMethod(null, wrappedParams) {
setPublic(true)
setName("setIntArray")
setParameterTypes($arrays.arrayOf($plugins.loadClass("java.lang.Class"), $plugins.loadClass("[I")))
}
// 调用无参静态方法并获取返回值
$console.log("调用静态方法并获取返回值", $objectWrappers.wrap(reflector.invokeMethod(null, null) {
setPublic(true)
setName("getIntArray")
}).contentToString())
let reflector = $reflectors.reflect("com.m8test.script.core.impl.JavaTypeTester")
let realParams = $arrays.intArrayOf(1, 2, 3, 4)
let wrappedParams = $arrays.newArray($plugins.loadClass("java.lang.Object"), 1)
$objectWrappers.wrap(wrappedParams).set(0, realParams)
// 调用带有参数的静态方法
reflector.invokeMethod(null, wrappedParams, (methodSelector) => {
methodSelector.setPublic(true)
methodSelector.setName("setIntArray")
methodSelector.setParameterTypes($arrays.arrayOf($plugins.loadClass("java.lang.Class"), $plugins.loadClass("[I")))
})
// 调用无参静态方法并获取返回值
$console.log("调用静态方法并获取返回值", $objectWrappers.wrap(reflector.invokeMethod(null, null, (methodSelector) => {
methodSelector.setPublic(true)
methodSelector.setName("getIntArray")
})).contentToString())
local reflector = _reflectors:reflect("com.m8test.script.core.impl.JavaTypeTester")
local realParams = _arrays:intArrayOf(1, 2, 3, 4)
local wrappedParams = _arrays:newArray(_plugins:loadClass("java.lang.Object"), 1)
_objectWrappers:wrap(wrappedParams):set(0, realParams)
-- 调用带有参数的静态方法
reflector:invokeMethod(nil, wrappedParams, function(methodSelector)
methodSelector:setPublic(true)
methodSelector:setName("setIntArray")
methodSelector:setParameterTypes(_arrays:arrayOf(_plugins:loadClass("java.lang.Class"), _plugins:loadClass("[I")))
end)
-- 调用无参静态方法并获取返回值
_console:log("调用静态方法并获取返回值", _objectWrappers:wrap(reflector:invokeMethod(nil, nil, function(methodSelector)
methodSelector:setPublic(true)
methodSelector:setName("getIntArray")
end)) :contentToString())
<?php
$reflector = $reflectors->reflect("com.m8test.script.core.impl.JavaTypeTester");
$realParams = $arrays->intArrayOf(1, 2, 3, 4);
$wrappedParams = $arrays->newArray($plugins->loadClass("java.lang.Object"), 1);
$objectWrappers->wrap($wrappedParams)->set(0, $realParams);
// 调用带有参数的静态方法
$reflector->invokeMethod(null, $wrappedParams, function ($methodSelector) use ($arrays, $plugins) {
$methodSelector->setPublic(true);
$methodSelector->setName("setIntArray");
$methodSelector->setParameterTypes($arrays->arrayOf($plugins->loadClass("java.lang.Class"), $plugins->loadClass("[I")));
});
// 调用无参静态方法并获取返回值
$console->log("调用静态方法并获取返回值", $objectWrappers->wrap($reflector->invokeMethod(null, null, function ($methodSelector) {
$methodSelector->setPublic(true);
$methodSelector->setName("getIntArray");
}))->contentToString());
reflector = _reflectors.reflect("com.m8test.script.core.impl.JavaTypeTester")
realParams = _arrays.intArrayOf(1, 2, 3, 4)
wrappedParams = _arrays.newArray(_plugins.loadClass("java.lang.Object"), 1)
_objectWrappers.wrap(wrappedParams).set(0, realParams)
def fn1(methodSelector):
methodSelector.setPublic(True)
methodSelector.setName("setIntArray")
methodSelector.setParameterTypes(_arrays.arrayOf(_plugins.loadClass("java.lang.Class"), _plugins.loadClass("[I")))
# 调用带有参数的静态方法
reflector.invokeMethod(None, wrappedParams, fn1)
def fn2(methodSelector):
methodSelector.setPublic(True)
methodSelector.setName("getIntArray")
# 调用无参静态方法并获取返回值
_console.log("调用静态方法并获取返回值",
_objectWrappers.wrap(reflector.invokeMethod(None, None, fn2)).contentToString())
# encoding: utf-8
reflector = $reflectors.reflect("com.m8test.script.core.impl.JavaTypeTester")
realParams = $arrays.intArrayOf(1, 2, 3, 4)
wrappedParams = $arrays.newArray($plugins.loadClass("java.lang.Object"), 1)
$objectWrappers.wrap(wrappedParams).set(0, realParams)
# 调用带有参数的静态方法
reflector.invokeMethod(nil, wrappedParams) { |methodSelector|
methodSelector.setPublic(true)
methodSelector.setName("setIntArray")
methodSelector.setParameterTypes($arrays.arrayOf($plugins.loadClass("java.lang.Class"), $plugins.loadClass("[I")))
}
# 调用无参静态方法并获取返回值
$console.log("调用静态方法并获取返回值", $objectWrappers.wrap(reflector.invokeMethod(nil, nil) { |methodSelector|
methodSelector.setPublic(true)
methodSelector.setName("getIntArray")
}).contentToString())
Last modified: 29 April 2025