Как узнать, является ли свойство массивом? - PullRequest
0 голосов
/ 30 июля 2010

Я вызываю функцию JavaScript с помощью API rhino:

Function fct = context.compileFunction(scope, script, "script", 1, null);
Scriptable result = (Scriptable) fct.call(
            context, scope, attrs, new Object[0]);
Object obj = result.get("objectClass", result);

Теперь, как я могу проверить, является ли значение свойства objectClass массивом?

Ответы [ 3 ]

1 голос
/ 30 июля 2010
boolean b = object.getClass().isArray();
if (b) {
    // object is an array
}

Приведенное выше решение предназначено для проверки массивов JAVA.

Если вы ищете массивы JavaScript в коде JAVA, то вам нужно знать, какой объект возвращается JavaScript для массива, и проверить с помощью instanceof.

1 голос
/ 30 июля 2010

Это может дать вам некоторое представление: объявить функцию, чтобы определить, является ли объект массивом, и вызвать эту функцию, передающую ваш объект.

engine.eval("function isArray(obj) {" +
                "  return obj.constructor == Array;" +
                "}");
Object obj = engine.eval("[1,2,3,4]");
Invocable invocableEngine = (Invocable) engine;
System.out.println(invocableEngine.invokeFunction("isArray", obj)); //true
0 голосов
/ 30 июля 2010

Вы можете проверить, является ли какой-либо объект массивом, выполнив object.getClass().isArray()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...