Это в том же ключе, что и вопрос под названием "Захват глобальных переменных Nashorn" . Я считаю, что это очень ограничивает невозможность перехвата назначения переменных глобальному объекту.
Например, скажем, eval script "a = 10". Возможно, я хочу вызвать слушателя, чтобы уведомить что-то, что "a" было добавлено в область. Единственный способ сделать это - исследовать глобальный объект после script eval'd.
Или скажите, что я хочу перехватить объект, назначенный глобальной области, и заменить его на другой; если он использовал Bindings
, я мог реализовать put
и передать на другие привязки:
public Object put(String name, Object value) {
//put a toStringed version of the object in scope
return delegate.put(name, value+"");
}
Таким образом, когда выдается код "a = 10", он будет помещать "10" в область видимости вместо 10.
Удобно иметь интерфейс Bindings
для реализации, но разочаровывает то, что я не могу предоставить что-то подобное этой реализации для глобального объекта. ScriptObjectMirror
является окончательным, поэтому я не могу даже перегрузить его и захватить последующий вызов внутреннего ScriptObject
. Я что-то пропустил?