在kotlin里面要怎么返回一個掛起函數(shù)而有不用標(biāo)記?
那個動態(tài)代理是用java寫的,傳了個continuation進(jìn)去就不需要標(biāo)記掛起函數(shù)。但是如果是在kotlin中,這里會被要求標(biāo)記為掛起函數(shù)或者協(xié)程中使用,而java的proxy的invoice是沒有掛起函數(shù)標(biāo)記的,沒法用啊?應(yīng)該怎么處理???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; ????????????}); }