在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;
????????????});
}