Вызов метода интерфейса

Есть интерфейс:

public interface BusinessRulesInterface {

    void select();

    void input(String UserName, String UID);

}

Методы этого интерфейса реализуются в другом класса, примерно так:

public class InterfaceRealization extends AppCompatActivity implements BusinessRulesInterface {
    
        @Override
        public void select() {
            Toast.makeText(this, "Нажата кнопка Select", Toast.LENGTH_LONG);
        }
    
        @Override
        public void input(String UserName, String UID) {
            Toast.makeText(this, "Input: " + UserName +" " + UID, Toast.LENGTH_LONG);
        }
    }

Пробую обратиться к методам select() и input() этого интерфейса, из внешнего класса так:

public class BusinessRules {

    public void business_rules(int action, String UserName, String UID) {

        switch (action) {
            case (1):
                BusinessRulesInterface.select();
                break;
            case (2):
                BusinessRulesInterface.input(UserName, UID);
                break;
        }
    }
}

но среда (Android Studio) не позволяет этого сделать. Как обратиться к методам select() и input() интерфейса из внешнего класса?


Ответы (1 шт):

Автор решения: стасевич
BusinessRulesInterface.select();

это обращение через класс, следовательно надо сам метод делать статичным.

если надо просто вызвать метод как select();

надо реализовывать следующим образом

public class BusinessRules implements BusinessRulesInterface  

и в теле класса переопределять метод

 @Override
    public void select() {
    // что-то делаем
    }

если не переопределять, можно в самом интерфейсе сделать дефолтную реализацию

   default   void select(){
       // делать что-то
   }
 

через анонимный класс

new InterfaceRealization() {
            @Override
            public void select() {
            // делать -что-то
            }
        };
    }
→ Ссылка