Я пытаюсь использовать существующий пакет для создания собственного приложения на нем.Однако я не знаю, как вызвать метод параметризованного интерфейса.
В пакете, который использует JavaFX, есть класс, конструктор которого
public class App extends Application{
...
protected App(Logic logic) {
this(logic.configuration().welcomeScreen, logic.configuration().name, Optional.of(logic));
}
}
И интерфейс такой:
public interface Logic extends X, Y {
default Configuration configuration() {
return new Configuration(1000, "Hello world", true);
}
default void initialize() {
System.out.println("Starting the application.");
}
}
И конфигурация идет следующим образом:
public final class Configuration {
public final int tick;
public final String name;
public final boolean welcomeScreen;
public Configuration(int tick, String name, boolean welcomeScreen) {
this.tick = tick;
this.name = name;
this.welcomeScreen = welcomeScreen;
}
}
вывод приложения:
(1000, "Hello world", true)
Теперь, когда я создаю свое собственное расширение приложения, переопределение не проходит:
public class Test extends App implements Logic{
@Override
public Configuration configuration() {
return new Configuration(25, "Test", true);
}
public static void main(String[] args) {
launch(args); //launches the App
}
}
вывод:
(1000, "Hello world", true)
Приложение по-прежнему вызывает метод интерфейса по умолчанию.В чем причина этого и как обойти метод по умолчанию в этом случае?