JRuby覚書き2
前回書いたようにJRubyでは、importをJavaのようにアスタリスクを使って省略して書くことが出来ない。前回のコードを例にとってあげると
import 'javax.swing.JFrame'
は問題ないけど
import 'javax.swing.*'
は出来ないといった具合である。これはちょっと不便なので、もう少しだけ利用しやすい方法を紹介する。Rubyには、classやmoduleというものがあって(詳しくは他のサイトで)、それらの中でだけ使える方法があります。
include Java class Test include_package 'javax.swing' def initialize frame = JFrame.new label = JLabel.new("test") frame.add(label) frame.set_size(200,200) frame.set_visible(true) end end t = Test.new
この記述で注目して欲しいところは3行目のinclude_packageという行です。文字通り、packageをインクルードするために使うのですが、ここではパッケージ名を書けば全てインクルードできるのですごく便利になるはずです。今回はJFrame以外にもJLabelも利用出来ていることから目的を果たせたと思います。ちなみに、classやモジュールの外で呼び出そうとするとエラーになるので気をつけてください(なんで駄目なのかはこれから勉強します)。
include Java module Test include_package 'javax.swing' def test frame = JFrame.new label = JLabel.new("test") frame.add(label) frame.set_size(200,200) frame.set_visible(true) end end include Test test
モジュールでも使えるよという検証?みたいなものです。個人的にはまだmoduleを使わないと困るような事態に陥ってないので(知らないから使ってない可能性がデカイ)不慣れですが、一応問題なく動いてそうです。これで、殆どのJavaの機能が使えるようになるはずです。問題は外部ライブラリの呼び出しですが、それに関しては次回述べていきたいと思います。