Вызов метода в 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
189 +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 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир