#java #nashorn
#java #nashorn
Вопрос:
Я использую instanceof, но в настоящее время он работает не так, как я ожидаю. У меня есть переменная, которую я извлекаю из своего Java-кода внутри моего скрипта. Давайте назовем эту переменную MyObject, которая является экземпляром класса MyObject, как и следовало ожидать.
if (myObject instanceof Java.type("MyObject")) {
//The check doesn't pass; the code here doesn't execute
}
Я мог найти только расплывчатую информацию в сети об этом. Каков определенный способ проверки, является ли MyObject экземпляром класса MyObject, как я бы легко сделал на Java?
Спасибо!
Комментарии:
1. Является
MyObject
ли тип, который вы знаете во время компиляции? ТогдаmyObject instanceof MyObject
это сработает.2. Вы имеете в виду, что я регистрирую класс в движке сценариев nashorn? В любом случае, я не думаю, что это известно.
Ответ №1:
То, что у вас должно работать (с полными именами классов, конечно). Например. это определенно работает:
jjs> var x = new java.util.BitSet()
jjs> x instanceof Java.type("java.util.BitSet")
true
Примечание: java.util.BitSet
и Java.type("java.util.BitSet")
являются взаимозаменяемыми, я просто использовал оба, чтобы проиллюстрировать, что независимо от того, как вы создаете объект, результат должен быть одинаковым.