Пользовательский класс импорта во время выполнения - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь выяснить, как разрешить следующий вариант использования:

  • Пользователь может определить класс 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-приложение (на самом деле HTTP-сервер Grizzly с джерси API Rest), которое должно иметь возможность компилировать оба класса.

¿Как я могу скомпилировать оба класса?Первый может быть скомпилирован.Второй не может, потому что компилятор говорит, что метод getBar() неизвестен (он удивительно не сбивается в строке импорта)

Я хочу отправить оба экземпляра Class<?> по сети ииспользуйте их в другом месте через отражение с getDeclaredConstructor()

С уважением.

...