対象:
JRuby

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)

新着情報
【iOS Objective-C, Swift Tips】アプリアイコンにバッジを表示(Swift)
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)

Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]