现在这么一个需求,有一个第三方Jar包,有一个类A,A有一个方法x(B b),方法的参数b是一个抽象类形,需要自己去实现里面的方法c(),使用反射的好处就是如果Jar包不存在,也不会影响编译,当然运行时错误可以捕获排除。
比如不通过反射,那么应该这么写:
A a = new A();
a.x(new B(){
c(){
// 根据需要实现c方法
}
d(E e){
}
});
那么现在的问题是通过反射,很容易得到A的对象
Class<?> cA = Class.forName("A的全名");
Object oA = cA.newInstance();
这样就能创建A的对象了,但是以相同的方式不能创建B的对象,因为B是抽象类,
不能使用B类型的newInstance方法创建,并且不知道在哪里实现它的方法c()。
那么现在的问题是,我们获取到B的类型时,怎么实例化它的对象,
准确的说是去实现一个或者继承B类,并且定义它的方法。最终将其传给A的x方法作为参数运行!
问题就是这样,不知道我是否描述清楚,请有经验的朋友帮忙解答,或者这是不能实现的!
也许Java提供的“机制”不能完成这样的需求?固有此一问!