Итак, когда мы устанавливаем onClickListener, скажем, на кнопку, это выглядит примерно так.
private Button myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
//do this
}
});
Итак, мы создаем безымянный анонимный класс, когда заявляем новый View.OnClickListener ... и реализуем интерфейс OnClickListener / и переопределяем его метод onClick. Я не понимаю, если у нас нет ссылки на этот анонимный класс, потому что он безымянный, как вызывается метод onClick ()? Я когда-либо реализовал анонимный класс только для переопределения определенных методов в указанном классе, например:
public class Foo{
public void bar(){
//do something
}
}
Foo foo = new Foo(){
@Override
public void bar(){
//do something else
}
}
Для меня это имеет смысл, потому что теперь, каждый раз, когда я использую ссылку «foo» для вызова метода bar (), эта ссылка будет использовать замещенную версию bar. В случае с Button нет ссылки на onClick (). Я совершенно запутался в этом.