JAVA的反射能否调用字段的方法?

发布于 2022-09-11 23:08:52 字数 209 浏览 22 评论 0

public final class Xx{
    private Button button = new Button();
    ...
}

如以上的类,在使用时它会创建一个按钮,我想通过反射来调用button的方法,以此在外部来修改它的某些样式,请问一下,能否做的到?
另一种方法是想通过继承改写的方式,但是它又是被final所修饰的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

冷血 2022-09-18 23:08:52

你反射,拿到里面的属性,转换成对象,拿到后你不就可以为所欲为了。

深巷少女 2022-09-18 23:08:52

反射调方法,需要:ClassMethod,参数,Class的对象
能拿到就能调,你这个场景都能拿到,所以能调

初雪 2022-09-18 23:08:52

第一个问题:反射可以做到。

第二问题:继承不行的话,可以通过组合的方式扩展呀。

眼波传意 2022-09-18 23:08:52

1.你可以通过反射获取到Class Xx中的所有字段,然后拿到Button字段通过反射来创建Button对象
2.final修饰的类是无法再去继承的,你可以看一下Button类中你要调用的方法,看一下其上级是否留有可扩展的空间,没有的话你只能考虑一下是否可以通过AOP或者代理模式来实现你要的功能了

耀眼的星火 2022-09-18 23:08:52

可以。
1.在反射获得class对象后,调用getDeclaredFiled()方法获得所有控制类型(private、public)的字段。
2.final修饰的不能被继承。对于该类:没有实现接口,所以可以考虑使用Cglib动态代理,生成子类进行目标类增强

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文