ArrayList
JRuby は使い方を検索してもあまりヒットしないんだよなぁ・・・これはチャンスでもあるのかな?(何の?)
jirb で動作確認してみる。
irb(main):002:0> include_class 'java.util.ArrayList' => ["java.util.ArrayList"] irb(main):003:0> list = ArrayList.new => #<Java::JavaUtil::ArrayList:0xdb3331 @java_object=[]> irb(main):004:0> list.add "a" => true irb(main):005:0> list.push "b" NoMethodError: undefined method `push' for #<Java::JavaUtil::ArrayList:0xdb3331 @java_object=[a]> from (irb):6:in `puts' irb(main):006:0> list << "b" => #<Java::JavaUtil::ArrayList:0xdb3331 @java_object=[a, b]> irb(main):007:0> puts list [a, b] => nil
java.util.ArrayList で include したのに、ArrayList.new すると java::JavaUtil::ArayList になっている。変換テーブルでもあるのかな?そのおかげか、「<<」 がつかえるけど push は無い。indexOf なんかも普通に使える。試しに ArrayList をパッケージ付きで new してみる。
irb(main):008:0> list = java.util.ArrayList.new => #<Java::JavaUtil::ArrayList:0x543cb1 @java_object=[]>
やっぱ変わっちゃう。
ArrayList に push メソッドを追加しちゃう
irb(main):001:0> include_class 'java.util.ArrayList' => ["java.util.ArrayList"] irb(main):002:0> class ArrayList irb(main):003:1> def push(p) irb(main):004:2> self << p irb(main):005:2> end irb(main):006:1> end => nil irb(main):007:0> list = ArrayList.new => #<Java::JavaUtil::ArrayList:0xa75737 @java_object=[]> irb(main):008:0> list.push "a" => #<Java::JavaUtil::ArrayList:0xa75737 @java_object=[a]>
できた〜♪