Final Local Variable, возможно, не была инициализирована в анонимном внутреннем классе

Вот мой код:

final Foo myFoo = new Foo(new Inner() {
    @Override
    callback(){
         myFoo.bar();
    }
});

(С реальными именами функций)

final MyArrayAdapter aa = new MyArrayAdapter(new View.OnClickListener() {
    @Override
    onClick(){
         aa.notifyDataSetChanged();
    }
});

Java выдает мне ошибку о том, как myFoo может не были инициализированы. Есть ли способ исправить это? Я потенциально могу установить для обратного вызова значение null, когда я создаю объект, а затем изменяю его впоследствии, но я надеюсь, что будет более чистый способ. Любые идеи? (Также это не сработало бы, если бы Foo не был написан мной и не предоставлял интерфейс для изменения обратного вызова позже.)

Если кому-то интересно, в моем конкретном сценарии Foo является ArrayAdapter, а bar is notifyDataSetChanged(). То, что отображается адаптером, зависит от значений элементов в массиве, и эти значения изменяются при нажатии на них. Обратный вызов — это clickListener.

7
задан Drew 20 April 2012 в 17:21
поделиться