Интерфейс как параметр метода / конструктора - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь использовать существующий пакет для создания собственного приложения на нем.Однако я не знаю, как вызвать метод параметризованного интерфейса.

В пакете есть класс, конструктор которого

public class App{
protected App(Logic logic) {
    this(logic.configuration().welcomeScreen, logic.configuration().appName, Optional.of(logic));
}
}

И интерфейс такой:

public interface Logic extends X, Y {

default Configuration configuration() {
    return new AppConfiguration(1000, "Hello world", true);
}
default void initialize() {
    System.out.println("Starting the application.");
}
}

И конфигурация выглядит следующим образом:

public final class Configuration {
public final int tick;
public final String appName;
public final boolean welcomeScreen;

public Configuration(int tick, String appName, boolean welcomeScreen) {
    this.tick = tick;
    this.appName = appName;
    this.welcomeScreen = welcomeScreen;
}
}

Как мне вызвать приложение с конфигурациями, которые не являются настройками по умолчанию (1000, «Hello world», true)?

вопрос похож на этот: интерфейс в качестве параметра метода в Java , но я не могу понять идею иметь интерфейс в качестве параметра.

1 Ответ

0 голосов
/ 27 сентября 2018

Вы предоставляете класс, который реализует интерфейс и переопределяет эти методы;так просто.default методы могут быть переопределены, и ваш метод, который принимает этот interface в качестве параметра, может принять этот новый класс в качестве параметра (поскольку он реализует интерфейс);и, таким образом, методы из класса будут вызваны.

...