Nashornを使っていると、Java ObjectとJavaScript Objectが混在するため、どちらがどちらなのか判断したくなることがありますが、そんな時のため、
この関数を使うと、Java Objectの場合はtrue、JavaScript Objectの場合はfalseを返してくれます。
ただし、nullの場合はJava Objectであってもfalseという判断をしてしまうのでご注意ください(ま、仕方ないですね)。
以下は試した例です。
Java.isJavaObject(obj)
という関数があります。この関数を使うと、Java Objectの場合はtrue、JavaScript Objectの場合はfalseを返してくれます。
ただし、nullの場合はJava Objectであってもfalseという判断をしてしまうのでご注意ください(ま、仕方ないですね)。
以下は試した例です。
var data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
print(Java.isJavaObject(data)); // false
var stdout = java.lang.System.out;
print(Java.isJavaObject(stdout)); // true
var ObjectType = Java.type("java.lang.Object");
print(Java.isJavaObject(ObjectType)); // true
var _null = null;
print(Java.isJavaObject(_null)); // false
var stdout = null;
print(Java.isJavaObject(stdout)); // false