[JavaScript, Java] JavaScriptオブジェクトとJavaオブジェクトを判断する

Nashornを使っていると、Java ObjectとJavaScript Objectが混在するため、どちらがどちらなのか判断したくなることがありますが、そんな時のため、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

0 件のコメント:

コメントを投稿