Вызов метода в java. Какая разница между this.method() и method() при вызове внутри класса? Есть метод внутри класса.public class RssReaderActivity extends Activity {
private void crossfade()
{
myButton.animate().alpha(1f).setDuration(animationShortDuration).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
step3Button.setVisibility(View.VISIBLE);
}
});
}
Есть обработчик внутри этого же класса:...
private View.OnClickListener sayHelloClickedListener = new View.OnClickListener(){
public void onClick(View v){
Integer viewId = (Integer)v.getId();
Resources viewRes = (Resources)v.getResources();
String buttonIdent = (String) viewRes.getResourceEntryName(viewId);
Log.v("OnClickLogger",buttonIdent);
if( buttonIdent.equals(String.valueOf("button_sayHello")) ) {
sayHelloText = (TextView) findViewById(R.id.textView_sayHello);
sayHelloText.setText("Hello Man!");
}
if( buttonIdent.equals(String.valueOf("button_appStep2")) ){
crossfade(); /* понимаю что здесь нельзя использовать this */
}
}
};
Можно ли как-то определить глобально this?
Насколько верно использование вызова метода crossfade() ?

21 Авг 2019 в 07:09
167 +1
0
Ответы
1

Когда вы вызываете метод внутри класса без использования ключевого слова "this", компилятор автоматически добавляет "this" перед вызовом метода. Таким образом, нет никакой разницы между this.method() и method() при вызове метода внутри класса.

В вашем примере, использование метода crossfade() в обработчике sayHelloClickedListener корректно. Вы правильно вызываете метод crossfade() без использования ключевого слова "this". В данном контексте, определение "this" не требуется, так как обработчик sayHelloClickedListener уже находится внутри класса RssReaderActivity.

Если вы планируете использовать метод crossfade() вне класса RssReaderActivity или в другом контексте, тогда вам потребуется экземпляр класса RssReaderActivity для вызова метода crossfade(). Глобально определить "this" не возможно, так как "this" всегда относится к текущему экземпляру объекта.

Таким образом, использование вызова метода crossfade() в обработчике sayHelloClickedListener вполне верно и не требует использования ключевого слова "this".

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир