2012-03-01 5 views
2

私はAndroid用に開発しているので、Java 1.6でClosureと似たようなものを組み込む方法を見つけようとしています。Javaで閉じるかそれに似たもの

私は(完璧な世界で)私はクラスを持っていますが、私たちはそれを「アイテム」と呼んでいます。

次に、これらの配列リストがあります。

ArrayList<Item> items = new ArrayList<item>; 

items.get(x)items.get(x)呼び出されたときに実行されるコードのブロックを保存します。このコードブロックは、ArrayList項目を格納するクラスのスコープ内で実行する必要があります。

「アイテム」を格納しているクラスにメソッドを作成し、各「アイテム」インスタンスに関数の名前を保存し、それらのメソッドを呼び出すためにリフレクションを使用することです。 ..

私はこれが可能かもしれないとはかなり疑いがありますが、これはどちらかの答えを見つける場所です。

ありがとうございました。あなたが必要なもの

+1

をしたい

interface Closure{ public void exec(); } 

ようなインターフェイスであり、各「閉鎖」のコードのための匿名クラスを作成します[Jon Skeetの記事](http://csharpindepth.com/articles/chapter5/closures.aspx)を読んで、Java(Java 7以前)もカバーしています。 –

答えて

9

あなたはこれが答えではないですが、あなたが持っているしたい場合があります

Closure closure = new Closure() { 
    public void exec(){ 
     // code here 
    } 
} 
+0

こんにちは、私はこれがどのように動作するか見てみたい、私は少し遅いと思う。だから私のItemsクラスで私は匿名クラスを定義するでしょうか?スコープをそのItemインスタンスのみに限定しませんか? – JoeyG

+0

um、 'Item'に匿名クラスを定義したい場合は、' exec'シグネチャを入力を受け入れるように変更し、 'exec'をあなたが渡したいものに変更することができます。 – Chikei

+0

さて、私にとっては問題があります。これらのコードブロックが、配列Listを格納するクラスにある変数にアクセスできるようにします。だから私はその住宅クラスで定義されているが、項目クラスに保存されているコードを呼び出す必要があります。私はあまりにも多くを求めているように感じる。 haha – JoeyG