Java方法 入参为接口Interface

时间:2022-06-04 21:11:02

Java方法 入参为接口Interface

今天研究Google官方的MVP框架模式,看到了一个方法,入参是两个Interface

public class TasksPresenter implements TasksContract.Presenter {

    private final TasksRepository mTasksRepository;

    private final TasksContract.View mTasksView;

    public TasksPresenter(@NonNull TasksRepository tasksRepository, @NonNull TasksContract.View tasksView) {
        mTasksRepository = checkNotNull(tasksRepository, "tasksRepository cannot be null");
        mTasksView = checkNotNull(tasksView, "tasksView cannot be null!");

        mTasksView.setPresenter(this);
    }

..........

TasksRepositoryTasksContract.View 是两个接口,调用该构造方法为:

mTasksPresenter = new TasksPresenter( Injection.provideTasksRepository(getApplicationContext()), tasksFragment);

Injection.provideTasksRepository(getApplicationContext())TasksRepository 的一个实现类;
tasksFragmentTasksContract.View 的一个实现类。

自己写了个测试:

public class Main {

    public static void main(String[] args) {
        //test 类
        Test test = new Test();
        //class1 类, 实现了Inter接口
        Class1 class1 = new Class1();
        //class2 类, 实现了Inter接口
        Class2 class2 = new Class2();
        //调用getTest()方法
        test.getTest(class1);
        System.out.println("<----------->");
        //调用getTest()方法
        test.getTest(class2);
    }

    //Inter接口
    private interface Inter{
        public void output();
    }

    //Class1类 实现Inter接口
    static class Class1 implements Inter{
        @Override
        public void output() {
            System.out.println("this is Class1");
        }
    }

    //Class2类 实现Inter接口
    static class Class2 implements Inter{
        @Override
        public void output() {
            System.out.println("this is Class2");
        }
    }

    //Test类 参数为Inter接口
    static class Test{
        public void getTest(Inter inter){
            inter.output();
        }
    }
}

输出为:

this is Class1
<----------->
this is Class2

Process finished with exit code 0

一切明了。