invoke#

介绍#

包名: org.yuanrong.call

为以下实例的内置方法时,将创建所指定的实例:

  • InstanceCreator

  • CppInstanceCreator

为以下实例的内置方法时,将调用指定方法:

  • FunctionHandler/InstanceFunctionHandler

  • VoidFunctionHandler/VoidInstanceFunctionHandler

  • CppFunctionHandler/CppInstanceFunctionHandler

  • JavaFunctionHandler/JavaInstanceFunctionHandler

约束#

1、由于嵌套引用计数限制,用户在函数间传递 ObjectRef 时,须使用 List.class 类型的容器来承载 ObjectRef (当前不能使用 ArrayList)。ObjectRef 也不能跟其他非 ObjectRef 类型共用一个容器,例如不允许将 List 初始化为 List<Object> 后同时存放 ObjectRef 类型和 Integer 类型等。

2、基于约束 1,cpp 和 java 互调场景请勿使用 list 容器承载非 ObjectRef 对象作为用户函数入参出参,如必须使用 list ,可以使用自定义数据类型对 list 做封装以规避此约束。

3、请勿使用 array 容器(例如 int[] )作为入参。

4、请勿使用 com.google.gson.JsonObject 类实例作为入参、出参以及返回值。

接口说明#

public ObjectRef FunctionHandler.invoke(Object… args) throws YRException#

java 函数调用接口。

  • 参数:

    • args - 调用指定方法所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    ObjectRef, 方法返回值在数据系统的 “id” ,使用YR.get()可获取方法的实际返回值。

public void VoidFunctionHandler.invoke(Object… args) throws YRException#

VoidFunctionHandler 类的成员方法,用于调用 void 函数。

  • 参数:

    • args - 调用指定方法所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

public InstanceHandler InstanceCreator.invoke(Object… args) throws YRException#

InstanceCreator 类的成员方法,用于创建 java 类实例。

  • 参数:

    • args - 调用类实例创建所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    InstanceHandler 类句柄。

public ObjectRef InstanceFunctionHandler.invoke(Object… args) throws YRException#

InstanceFunctionHandler 类的成员方法,用于调用 Java 类实例的成员函数。

InvokeOptions invokeOptions = new InvokeOptions();
invokeOptions.addCustomExtensions("app_name", "myApp");
InstanceHandler instanceHandler = YR.instance(Counter::new).invoke(1);
InstanceFunctionHandler insFuncHandler = instanceHandler.function(Counter::Add);
ObjectRef ref = insFuncHandler.options(invokeOptions).invoke(5);
int res = (int)YR.get(ref, 100);
  • 参数:

    • args - 调用类实例创建所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    ObjectRef:方法返回值在数据系统的 “id” ,使用 YR.get() 可获取方法的实际返回值。

public void VoidInstanceFunctionHandler.invoke(Object… args) throws YRException#

VoidInstanceFunctionHandler 类的成员方法,用于调用 void 类实例的成员函数。

  • 参数:

    • args - 调用指定方法所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

public ObjectRef JavaFunctionHandler.invoke(Object… args) throws YRException#

java 函数调用接口。

  • 参数:

    • args - 调用指定方法所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    ObjectRef:方法返回值在数据系统的 “id” ,使用 YR.get() 可获取方法的实际返回值。

public JavaInstanceHandler JavaInstanceCreator.invoke(Object… args) throws YRException#

JavaInstanceCreator 类的成员方法,用于创建 java 类实例。

  • 参数:

    • args - 调用类实例创建所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    JavaInstanceHandler 类句柄。

public ObjectRef JavaInstanceFunctionHandler.invoke(Object… args) throws YRException#

JavaInstanceFunctionHandler 类的成员方法,用于创建 java 类实例。

  • 参数:

    • args - 调用类实例创建所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    ObjectRef:方法返回值在数据系统的 “id” ,使用 YR.get() 可获取方法的实际返回值。

public ObjectRef CppFunctionHandler.invoke(Object… args) throws YRException#

C++ 函数调用接口。

CppFunctionHandler cppFuncHandler = YR.function(CppFunction.of("Add", int.class));
ObjectRef ref = cppFuncHandler.invoke(1);
int result = YR.get(ref, 15);
  • Parameters:

    • args - 调用类实例创建所需的入参。

  • Throws:

    • YRException - 统一抛出的异常类型。

  • Returns:

    ObjectRef:方法返回值在数据系统的 “id” ,使用 YR.get() 可获取方法的实际返回值。

public CppInstanceHandler CppInstanceCreator.invoke(Object… args) throws YRException#

CppInstanceCreator 类的成员方法,用于创建 cpp 类实例。

  • 参数:

    • args - 调用指定方法所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    CppInstanceCreator类句柄。

public ObjectRef CppInstanceFunctionHandler.invoke(Object… args) throws YRException#

CppInstanceFunctionHandler 类的成员方法,用于创建 cpp 类实例。

CppInstanceHandler cppInstanceHandler = YR.instance(CppInstanceClass.of("Counter","FactoryCreate")).setUrn("sn:cn:yrk:12345678901234561234567890123456:function:0-opc-opc:$latest").invoke(1);
CppInstanceFunctionHandler cppInsFuncHandler = cppInstanceHandler.function(CppInstanceMethod.of("Add", int.class));
ObjectRef ref = cppInsFuncHandler.invoke(5);
int res = (int)YR.get(ref, 100);
  • 参数:

    • args - 调用类实例创建所需的入参。

  • 抛出:

    • YRException - 统一抛出的异常类型。

  • 返回:

    ObjectRef:方法返回值在数据系统的 “id” ,使用 YR.get() 可获取方法的实际返回值。