Java Interface 默认方法怎么使用注入 Service

在 Java 中,接口默认方法是 Java 8 引入的一个新特性。接口默认方法允许在接口中提供方法实现,这样在接口的实现类中就不需要实现这些方法了。这在一些情况下非常方便,比如在一个接口中提供了几个通用的方法,而实现类只需要实现其中的一部分。

默认方法示例

下面是一个简单的接口示例,其中定义了一个默认方法:

public interface MyService {
    void someMethod();

    default void defaultMethod() {
        System.out.println("This is a default method.");
    }
}

这里 MyService 接口定义了一个 someMethod 方法和一个默认方法 defaultMethod

Service 实现类

接下来我们创建一个实现类来实现 MyService 接口:

public class MyServiceImpl implements MyService {
    @Override
    public void someMethod() {
        System.out.println("This is the implemented method.");
    }
}

在这个实现类中,我们实现了 someMethod 方法,但没有实现 defaultMethod 方法,因为它已经在接口中提供了默认实现。

注入 Service

如果我们想在另一个类中使用 MyService 接口的实现类 MyServiceImpl,我们可以通过依赖注入的方式来实现:

public class MyApp {
    private MyService myService;

    public MyApp(MyService myService) {
        this.myService = myService;
    }

    public void doSomething() {
        myService.someMethod();
        myService.defaultMethod();
    }

    public static void main(String[] args) {
        MyService myService = new MyServiceImpl();
        MyApp app = new MyApp(myService);
        app.doSomething();
    }
}

MyApp 类中,我们通过构造函数将 MyService 接口的实现类 MyServiceImpl 注入进来,然后可以调用其中的方法。

关系图

下面是一个简单的类关系图,展示了 MyApp 类和 MyService 接口之间的关系:

erDiagram
    MyApp ||--o| MyService : uses
    MyService }|--o| MyServiceImpl : implements

流程图

下面是一个简单的流程图,展示了 MyApp 类中的方法调用流程:

flowchart TD
    start[Start] --> doSomething{doSomething}
    doSomething --> someMethod[someMethod()]
    someMethod --> defaultMethod[defaultMethod()]
    defaultMethod --> end[End]

通过以上示例,我们可以看到如何使用默认方法和依赖注入的方式来实现接口的实现类的注入。这样可以更好地解耦代码,提高代码的可维护性和可扩展性。希望这篇文章能帮助你更好地理解 Java 中接口默认方法的使用。