さて、前回単純な1つのインスタンスのLookupについて簡単に試してみました。今回は、複数のインスタンスがLookupの中にあったときはどうするんだろう?というのをやってみようと思います。
複数のインスタンスをlookupするには、lookupAllという、そのものズバリな名前のメソッドがLookupクラスに用意されています。
これも、使い方は簡単なので、早速使ってみようと思います。1つ前のエントリと同じ要領でプロジェクトにjarを追加して以下のプログラムを書いて実行します。
package lookupsample; import java.util.Collection; import org.openide.util.Lookup; import org.openide.util.lookup.AbstractLookup; import org.openide.util.lookup.InstanceContent; public class Main { public static void main(String[] args) { // オブジェクトの入れ物 InstanceContent c = new InstanceContent(); // InstanceContentからLookupするAbstractLookupを作る Lookup l = new AbstractLookup(c); // Stringを複数登録 c.add("Hello"); c.add("world"); c.add("複数インスタンス"); // Integer型も一応登録しておく c.add(100); // 複数インスタンスを取得するにはlookupAllを使う Collection<? extends String> str = l.lookupAll(String.class); // lookupしたものを表示する System.out.println("l.lookupAll(String.class) = " + str); } }
こいつを実行すると
l.lookupAll(String.class) = [Hello, world, 複数インスタンス]
と表示されます。
Lookupに登録した複数のインスタンスがきちんととれていることがわかりますね。