这是Kotlin等效的Java代码,使用InvocationHandler
:
override fun invoke(proxy: Any?, method: Method?, args: Array<out Any>?): Any {
println("before httprequest--->" + args)
val ret = method!!.invoke(obj, args)
println("after httprequest--->")
return ret
}
Run Code Online (Sandbox Code Playgroud)
Java代码:
public Object invoke(Object o, Method method, Object[] args) throws Throwable {
System.out.println("jdk--------->http" + args);
Object result=method.invoke(target, args);
System.out.println("jdk--------->http");
return result;
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下args
都是null,但是如果我运行它,Kotlin代码就会给出异常
Exception in thread "main" java.lang.IllegalArgumentException: wrong number of arguments
Run Code Online (Sandbox Code Playgroud)
Kotlin使用标准Java类的原因是什么?