ScriptObjectMirror
имеет метод unwrap
, который принимает объект Global
. Проблема в том, что я не могу понять, как отправить глобальный объект, потому что, похоже, нет простого способа получить к нему доступ. Это означает, что я всегда получаю зеркало и не сырьевая объекта (декомпилированы код из ScriptObjectMirror.class
):Передача в глобальном объекте ScriptObjectMirror.unwrap
public static Object unwrap(Object obj, Object homeGlobal) {
if(obj instanceof ScriptObjectMirror) {
ScriptObjectMirror mirror = (ScriptObjectMirror) obj;
return mirror.global == homeGlobal ? mirror.sobj : obj;
} else {
return obj instanceof JSONListAdapter?((JSONListAdapter)obj).unwrap(homeGlobal):obj;
}
}
Как пройти в правильном глобальном объекте?
Единственный (уродливый) способ я нашел, как получить этот глобальный, используя частное отражение (не судите меня :)), чтобы получить глобальное значение, которое, по-видимому, находится в каждом ScriptObjectMirror. Я пытаюсь реализовать способность передавать ScriptObjectMirrors в потоке данных, не требуя явно пропустить движок. Кажется сложным без нарушения инкапсуляции. BLEH. –