[Nashorn] typeof(x) === "number"

投稿日: 2015/12/05 14:33:35

typeofを使うと、java.lang.Integerもjava.math.BigDecimalも"number"が返されます。

1. 実行するスクリプト(typeOfNumber.js)

function assertEq(f,x) {var r=f();if(r!==x)throw new Error(f.toSource()+", expected=${x}, actual=${r}");}
var Integer = Java.type("java.lang.Integer");
var BigDecimal = Java.type("java.math.BigDecimal");
assertEq(function() typeof 100, "number");
assertEq(function() typeof Integer.valueOf(200), "number");
try { assertEq(function() typeof BigDecimal.ONE, "object"); } catch(e) { print(e); }

2. jjsで実行する

>jjs -scripting -fullversion typeOfNumber.js
nashorn full version 1.8.0_66-b18
Error: function() typeof BigDecimal.ONE, expected=object, actual=number