public final class Xx{
private Button button = new Button();
...
}
如以上的类,在使用时它会创建一个按钮,我想通过反射来调用button的方法,以此在外部来修改它的某些样式,请问一下,能否做的到?
另一种方法是想通过继承改写的方式,但是它又是被final所修饰的。
public final class Xx{
private Button button = new Button();
...
}
如以上的类,在使用时它会创建一个按钮,我想通过反射来调用button的方法,以此在外部来修改它的某些样式,请问一下,能否做的到?
另一种方法是想通过继承改写的方式,但是它又是被final所修饰的。
1.你可以通过反射获取到Class Xx中的所有字段,然后拿到Button字段通过反射来创建Button对象
2.final修饰的类是无法再去继承的,你可以看一下Button类中你要调用的方法,看一下其上级是否留有可扩展的空间,没有的话你只能考虑一下是否可以通过AOP或者代理模式来实现你要的功能了
可以。
1.在反射获得class对象后,调用getDeclaredFiled()
方法获得所有控制类型(private、public)的字段。
2.final修饰的不能被继承。对于该类:没有实现接口,所以可以考虑使用Cglib动态代理,生成子类进行目标类增强
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
你反射,拿到里面的属性,转换成对象,拿到后你不就可以为所欲为了。