対象:
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)

新着情報
【オープンソースソフトウェア環境構築】Apple silicon Macで開発環境を構築
【Rust Tips】Actix webでJSONをPOSTする
【Rust Tips】コマンドライン引数を取得する

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