第7章 Nashorn JavaScript エンジンの活用 : 問題 4 : string から java.lang.String へキャスト
問題
文字列から部分文字列を抽出することで、リテラルでない JavaScript の文字列を生成し、それに対してgetClass
メソッドを呼び出せ
次にjava.lang.String.class.cast
メソッドへ渡せ
このとき何が起こるか?
解答
■ リテラルでない JavaScript の文字列の型
jjs> var a = 'abcdefg'.substr(3, 3) jjs> a def jjs> typeof a string jjs> a.getClass() class java.lang.String
■ java.lang.String
にキャスト
jjs> var b = java.lang.String.class.cast(a) jjs> b def jjs> typeof b string jjs> b.getClass() class java.lang.String
リテラルでない JavaScript の文字列の型もjava.lang.String
だったので、特に何も起きない
さらに問題
それが起きた原因は何か?
解答
こんな質問が出るってことは、キャストでエラーが起きないといけないんだろうか?
例えば、リテラルでない JavaScript の文字列はjava.lang.Object
で、キャストではClassCastException
が throw されるとか…
java.lang.ClassCastException: Cannot cast java.lang.Object to java.lang.String
ん~、よく分かりません