用户定义的类在运行时导入

时间:2019-03-07 14:27:24

标签: java compilation

我正在尝试找出如何解决以下用例:

  • 用户可以这样定义Java类,例如说MyFoo(代码是自动生成的,并且guid设置为避免名称冲突)
import com.bar.entities.BaseEntity;
package com.bar.entities.defined.79B35635_DEDF_A344_9621_0477A6E71725;

public class MyFoo extends BaseEntity {

    public String getFoo() { ... }
    public Integer getBar() { ... }

    @Override 
    public byte[] serialize() {...}
}
  • 用户可以将该Java类导入其他类中,如下所示:
package com.bar.business;

import com.bar.entities.defined.79B35635_DEDF_A344_9621_0477A6E71725.MyFoo;

public class Business extends Minion {
    @Override
    public void execute(EntityProvider ep) {
        MyFoo myFoo = ep.get("myFoo", MyFoo.class);
        if (myFoo.getBar() < 10)  {
            notifyMaster();
        }
    }
}

此外,我有一个Java应用程序(实际上是带有Jersey API Rest的Grizzly HTTP Server),必须能够编译两个类。

¿我如何编译两个类?第一个可以编译。第二个原因不能,因为编译器说方法getBar()未知(令人惊讶的是,它不会在导入行失败)

我想通过网络发送两个Class<?>实例,并通过与getDeclaredConstructor()的反射在其他地方使用它们

亲切的问候。

0 个答案:

没有答案