Java 作为方法/构造函数参数的接口

Java 作为方法/构造函数参数的接口,java,methods,parameters,interface,overriding,Java,Methods,Parameters,Interface,Overriding,我正在尝试使用现有的软件包在上面创建我自己的应用程序。但是,我不知道如何调用接口参数化方法 在包上有一个类,它的构造函数是 public class App{ protected App(Logic logic) { this(logic.configuration().welcomeScreen, logic.configuration().appName, Optional.of(logic)); } } 界面是这样的: public interface Logic extends

我正在尝试使用现有的软件包在上面创建我自己的应用程序。但是,我不知道如何调用接口参数化方法

在包上有一个类,它的构造函数是

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的配置调用应用程序


问题与此类似:但我无法理解将接口作为参数的想法。

您提供了一个实现接口并重写这些方法的类;就这么简单。默认方法是可重写的,并且将此接口作为参数的方法可以将新类作为参数,因为它实现了接口;因此,将调用该类中的方法

出现了一个错误,我无法覆盖该方法。这是因为在配置方法上没有公共符号。我可以通过公开的AppConfiguration方法访问AppLogic逻辑吗?@Hjell不知道这怎么可能。例如:接口测试{default String getIt{return;}}}类Impl实现测试{@Override public String getIt{return;}}}}My bad,错误将其设置为public。不知道没有它为什么不能正确编译。现在我是否将Impl的示例设置为参数?@Hjell,如果这有帮助,它会有帮助,但并没有解决我的问题。现在,当我过度骑行时,它不知什么原因都认不出来。代码如下:公共类Z实现逻辑{@Override public Configuration Configuration{return new Configuration10,Test,false;}public static void mainString[]args{launchargs}}仍然使用与默认配置相同的值。这有什么原因不起作用吗?