Я не уверен, что вы спрашиваете, но похоже, что вы хотите, чтобы динамически загружаемый класс имел доступ к полям и методам класса, содержащего код из которого был вызван run()
. Вы можете сделать это:
// you might need [2] in the following line
String callerClass = Thread.currentThread().getStackTrace()[1].getClassName();
Это полное имя класса, из которого был вызван текущий метод. Получив это, вы можете получить доступ к полям и методам этого класса, используя отражение:
Class clazz = Class.forName(callerClass);
Field[] fields = clazz.getFields();
Method[] methods = clazz.getMethods();
Если вы также хотите, чтобы участники были недоступны, используйте getDeclaredFields()
и getDeclaredMethods()
.
Для других идей, посмотрите на этот пост .