Java 反射抽象类问题『求高手解答』

leafsoar leafsoar 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在这么一个需求,有一个第三方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提供的“机制”不能完成这样的需求?固有此一问!
...全文
评论 9
收藏 已收藏
分享
返回顶部
leafsoar
Java SE 62,621 成员 307,251 内容