因此对于这个项目,我试图在运行时扩展一个类。 我想知道的是,这甚至有可能吗?如果是这样,我该怎么做?这些东西有图书馆吗?在运行时扩展类
Q
在运行时扩展类
5
A
回答
4
CGLib是你要找的图书馆。在扩展类或在运行时实现接口方面是相当强大的,所以许多流行的框架(如Spring或Hibernate)都使用它。
您可以创建类扩展的代码一样
public Object createProxy(Class targetClass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(targetClass);
enhancer.setCallback(NoOp.INSTANCE);
return enhancer.create();
}
虽然你可能会与期望的逻辑的有效方法拦截器更换NoOp
回调。
+0
太棒了,谢谢! – PaulBGD
1
0
答案取决于“扩展课程”的含义。在java中,“扩展”意味着声明另一个扩展第一个类的类(是一个子类)。所以如果你想创建一个给定类的子类,这是可能的 - 只需准备一个表示子类的字节数组并将其传递给类加载器即可。
如果要将字段或方法添加到现有类中,则只有在加载此类时才有可能,并且可以通过替换字节数组表示来完成。如果class已经加载,你不能以任何方式修改它。
+0
我只是想动态地选择扩展哪个类(因为类的类路径不断变化)。 – PaulBGD
相关问题
- 1. 在运行时动态扩展类型?
- 2. 在运行时扩展/修改NHibernate类
- 3. Java:在运行时扩展类
- 4. 从扩展运行方法扩展运行扩展运行
- 5. 在运行时扩展对象时如何调用类方法?
- 6. 在运行时扩展NHibernate查询
- 7. TD在运行时得到扩展
- 8. JavaScript在运行时扩展对象?
- 9. 在运行时加载OpenGL扩展
- 10. 在运行时在XSD中扩展复杂类型
- 11. 在运行时扩展Log4JLogger并调用子类
- 12. 无法扩展在运行时编译的类
- 13. 如何使用Reflection在运行时使用PHP扩展类
- 14. 扩展类时出现错误扩展
- 15. 运行vscode-mssql扩展时出错
- 16. Fortran运行时警告:扩展名:$ descriptor
- 17. 通过在构造函数中接受基类型在运行时扩展类?
- 18. PHP类扩展 - 运行父函数之前运行的东西
- 19. Php从不同的类运行时延伸(扩展为变量?)
- 20. 扩展groovy类导致运行时异常当检索bean
- 21. Android ADT:扩展android.widget.EditText - 运行时类抛出异常
- 22. 当我运行“php TestRunner SiteTest.php”时,它看不到扩展类
- 23. 对window.open运行Firefox扩展()
- 24. 运行扩展自动
- 25. 无法运行Firefox扩展
- 26. 如何测试一个java类是否在运行时扩展另一个类?
- 27. 安装“Memcache”PECL扩展后无法运行PHP运行时
- 28. Visual Studio代码运行时保存扩展未运行
- 29. 扩展扩展类型
- 30. 扩展扩展类Zend_Db_Table_Row_Abstract
你为什么要这么做?请澄清用例。我怀疑这是否可能。 –