Android: почему makeText работает с экземпляром Toast?

Я случайно закодировал свой Toast таким образом, и он продолжает работать.

public class MainActivity extends AppCompatActivity  {

  private Toast mToast;

  ...

  private void onClickHandler(int itemIndex) {
    mToast = new Toast();
    mToast.makeText(this, String.valueOf(itemIndex), Toast.LENGTH_SHORT).show();
  }
}

Учитывая, что makeText является статическим методом, почему вышеописанное должно работать?


person Boon    schedule 18.06.2017    source источник


Ответы (1)


Поскольку статические методы и переменные также могут быть доступны из экземпляра класса

Однако доступ к ним таким образом считается плохой практикой.

person Larpee    schedule 18.06.2017
comment
Да, это и Android Studio — одна из IDE, которая выделяет это как предлагаемое изменение, а не как ошибку компиляции при использовании Java. Более того, Kotlin вообще не допускает использования статических методов из экземпляров. - person DaveNOTDavid; 18.06.2017