Мне нужно было изменить переменные внутри внутреннего класса, и я получил позорную ошибку «Не могу ссылаться на неконфигурированную переменную внутри внутреннего класса, определенного другим методом».внутренний класс не конечная переменная java
void onStart(){
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int q = i;
}
});
}
Я быстро сделал класс, который провел все вещи, которые я хотел изменить и сделал окончательный вариант класса за пределами внутреннего класса
class temp{
int q;
}
void onStart(){
final temp x = new temp();
bt.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
x.q = i;
}
});
}
Это, кажется, что мне нужно, и это работает, но мне интересно, правильно ли это решить проблему. Кроме того, я действительно ненавижу использовать слово temp
, чтобы назвать мой класс. Есть ли реальный термин программирования для того, что я сделал, чтобы сделать более описательное имя для моего класса?
Bravo. Другая приятная вещь заключается в том, что этот внутренний класс более расширяемый и многоразовый. ИМО, анонимные внутренние классы - почти всегда плохая идея. – user949300
Они хорошо работают как один из классов стиля действия, обработчики для определенных событий, в которых действия могут выполняться на основе входных данных. Очень часто в GUI-программировании, что является его примером. За исключением этого случая существует такое взаимодействие между классами, которое усложняет вопросы. – Robin
Это то, что я искал! Благодаря! –