在kotlin里面要怎么返回一個掛起函數而有不用標記?
那個動態代理是用java寫的,傳了個continuation進去就不需要標記掛起函數。但是如果是在kotlin中,這里會被要求標記為掛起函數或者協程中使用,而java的proxy的invoice是沒有掛起函數標記的,沒法用???應該怎么處理啊?java的寫好了,但是改成kotlin不會?
public?static?<T>?T?create(Class<T>?service)?{ ????return?(T)?Proxy.newProxyInstance(service.getClassLoader(),?new?Class<?>[]{service} ????????????,?(o,?method,?args)?->?{ ????????????????String?url?=?""; ????????????????BaseParam?requestParam?=?null; ????????????????String?requestMethod?=?"GET"; ????????????????Class<?>?returnT?=?method.getReturnType(); ????????????????if?(returnT?==?null?||?BaseResponse.class.isAssignableFrom(returnT))?{ ????????????????????throw?new?RuntimeException("返回類型不是BaseResponse"); ????????????????} ????????????????if?(method.getGenericReturnType()?==?Continuation.class?&&?args?!=?null?&&?args.length?>?0)?{ ????????????????????int?len?=?args.length; ????????????????????Class?clazz; ????????????????????for?(int?i?=?0;?i?<?len;?i++)?{ ????????????????????????clazz?=?args[i].getClass(); ????????????????????????if?(BaseParam.class.isAssignableFrom(clazz))?{ ????????????????????????????requestParam?=?(BaseParam)?args[i]; ????????????????????????} ????????????????????} ????????????????????if?(requestParam?==?null)?{ ????????????????????????requestParam?=?new?BaseParam(); ????????????????????} ????????????????????if?(method.isAnnotationPresent(APIGet.class))?{ ????????????????????????url?=?method.getAnnotation(APIGet.class).value(); ????????????????????}?else?if?(method.isAnnotationPresent(APIPost.class))?{ ????????????????????????url?=?method.getAnnotation(APIPost.class).value(); ????????????????????????requestMethod?=?"POST"; ????????????????????} ????????????????????Continuation<?>?continuation?=?(Continuation<?>)?args[args.length?-?1]; ????????????????????return?OkHttpProxy.INSTANCE.await(NetWorkManager.Companion.getInstance().call(url,?requestParam,?requestMethod),?returnT,?continuation); ????????????????} ????????????????return?null; ????????????}); }