я делаю инициализацию нового класса с помощью отражения и я поставил один суперкласс поле с «это»:Java отражение: набор супер поле класса во время инициализации
JavaTask jt = (JavaTask) clazz.newInstance();
for(Field f : clazz.getSuperclass().asSubclass(JavaTask.class).getDeclaredFields()) {
if(f.getType().equals(JavaTaskListener.class)) {
logger.trace("Set ReadyListener");
f.setAccessible(true);
f.set(jt, this);
}
}
В таком решении я могу получить доступ к «это» из нового экземпляра jt после завершения инициализации. Можно ли каким-то образом установить jt после создания суперкласса и до создания базового класса, чтобы я мог получить доступ к этому «this» во время инициализации (без добавления нестандартной конструкции)?
public class LocalMotions extends JavaTask {
...
private int nb = super.jtListener.getParameter(NUMBER));
...
Чтобы подтвердить, что вы хотели бы показать значение 'this' от конструктора до того, как объект hierachy был полностью создан JVM? –
Да. «Это», который является слушателем, очевидно, уже создан. Если это будет объект, созданный суперклассом, я мог бы получить доступ к нему изнутри финального класса во время инициализации. И эта ситуация, которую я думал воспроизвести с размышлением. –
jtListener - это JavaTaskListener –