我是靠谱客的博主 可耐电脑,最近开发中收集的这篇文章主要介绍java利用反射为接口实例化对象并调用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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利用反射为接口实例化对象并调用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部