Закрытие в Java или что-то подобное - PullRequest
3 голосов
/ 01 марта 2012

Я пытался найти способ включить нечто похожее на Closure в Java 1.6, так как я разрабатываю для Android.

Что я хочу (в идеальном мире) У меня есть класс, мы назовем его «Предмет».

Затем у меня есть arrayList из них.

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

В каждом из них items.get (x) я хочу сохранить блок кода, который будет выполняться при вызове. Этот блок кода должен находиться в области видимости класса ArrayList.

Моя единственная, наполовину бессмысленная идея, заключается в том, чтобы создать методы в классе, в котором размещены "элементы", и сохранить имя функции в каждом из экземпляров "элементов", а затем использовать отражение для вызова этих методов ... .

Я довольно сомневаюсь, что это возможно, но это то место, где я найду ответ в любом случае.

Заранее спасибо за любую помощь.

1 Ответ

10 голосов
/ 01 марта 2012

Вам нужен такой интерфейс, как

interface Closure{
    public void exec();
}

и создайте анонимный класс для каждого кода «замыкания», который вы хотите

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