【问题标题】:How do I extend Java classes by Reflection?如何通过反射扩展 Java 类?
【发布时间】:2009-12-11 09:13:01
【问题描述】:

我有两个字符串:

String a="org.test.A";
String b="org.test.B";

我通过反射上了一门课

Class aClass = Class.forName(a);

我想要 aClass 扩展 b,比如:

Class okClass=aClass.extends(b);//how to implement this?

如何实现?

如何获取okClass?

谢谢!

【问题讨论】:

  • A 类和 B 类是否已在别处定义?您希望 okClass 具有哪些属性?这个问题没有任何意义。

标签: java


【解决方案1】:

除了使用JDK dynamic proxy(只能通过接口工作)之外,您还可以使用CGLIB 或javassist 在运行时扩展类。

【讨论】:

    【解决方案2】:

    一般来说,您希望能够在运行时创建新的类(而不是对象)。为此,您可以使用bytecode engineeringjava compiler api

    【讨论】:

    • 这些链接失效了,你能更新一下吗?
    【解决方案3】:

    您可以从阅读dynamic proxies 开始。代理不扩展类,但它们确实实现了接口,您可以通过调用处理程序将这些接口映射到您的类实现。

    【讨论】:

      【解决方案4】:

      如前所述,我建议查看 CGLIB,但也有 javassist,这是一个用于编辑字节码的类库...

      【讨论】:

        猜你喜欢
        • 2013-12-01
        • 2012-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多