概述
java利用反射为接口实例化对象并调用
package xxxxx;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import xxxxx.MyLibrary.MyCallback;
import java.lang.reflect.InvocationHandler;
class MyLibrary {
public interface MyCallback {
void doMyCallback();
}
public void mainMethod(MyCallback myCallback) {
System.out.println("doing MyLibrary mainMethod...");
myCallback.doMyCallback();
}
}
class MyHandler implements InvocationHandler{
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("doing MyHandler invoke...");
return null;
}
}
public class Test3 {
public static void main(String[] args) throws Exception {
Class<?> myLibraryClazz = Class.forName("xxxxx.MyLibrary");//类
Class<?> myCallbackClazz = Class.forName("xxxxx.MyLibrary$MyCallback");//接口
MyHandler myHandler = new MyHandler();//类
MyCallback myCallback = (MyCallback)Proxy.newProxyInstance(
Test3.class.getClassLoader(),//类加载器
new Class[] { myCallbackClazz },//接口数组
myHandler//为接口实现的对应具体方法
);//为接口实例化对象
Method method = myLibraryClazz.getDeclaredMethod("mainMethod", MyCallback.class);//(类名,参数类型)
method.invoke(myLibraryClazz.newInstance(), myCallback);//调用方法,(实例化对象,内部接口实现对象)
}
}
运行结果:
doing MyLibrary mainMethod...
doing MyHandler invoke...
最后
以上就是可耐电脑为你收集整理的java利用反射为接口实例化对象并调用的全部内容,希望文章能够帮你解决java利用反射为接口实例化对象并调用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复