kraso4niy
@kraso4niy
fullstack

Вызов метода в 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() ?
  • Вопрос задан
  • 2872 просмотра
Решения вопроса 1
mrstrictly
@mrstrictly
В Java разрешено использовать методы класса из внутреннего (inner) класса. Если по какой-то причине хочется явно указать объект вызываемого метода, например, при конфликте имен, указатель на контейнер из внутреннего класса можно получить явно задавая имя контейнера. В вашем случае "RssReaderActivity.this.crossfade()".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы