対象: Javaオブジェクトのクラス名を取得するJavaオブジェクトを使用するコードを書いていて、classメソッドで取得したクラス名が意味不明だった事はないだろうか。Javaオブジェクトであっても、メジャーなクラスならばclassメソッドでもRubyオブジェクトとしてのクラス名が得られるが、それ以外のクラスでは#<Class:01x1e46a68>のようになってしまって意図した結果は得られない。 この場合、java_classメソッドならば意図したクラス名が得られる。 require "java" date = java.util.Date.new p "class #{date.class}" p "java_class #{date.java_class}" p date.to_s proc = java.lang.Runtime.runtime.exec("ls") p "class #{proc.class}" p "java_class #{proc.java_class}" 結果は以下のようになる。 "class Java::JavaUtil::Date" "java_class java.util.Date" "Tue Feb 23 22:05:32 JST 2010" "class #<Class:01x1e46a68>" "java_class java.lang.UNIXProcess" (2010/02/24)
Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]
|