Java nashorn сравнивает, если объекты java имеют определенный тип java

#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") являются взаимозаменяемыми, я просто использовал оба, чтобы проиллюстрировать, что независимо от того, как вы создаете объект, результат должен быть одинаковым.