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);
}
..........
TasksRepository 与 TasksContract.View 是两个接口,调用该构造方法为:
mTasksPresenter = new TasksPresenter( Injection.provideTasksRepository(getApplicationContext()), tasksFragment);
Injection.provideTasksRepository(getApplicationContext())为 TasksRepository 的一个实现类;
tasksFragment 是 TasksContract.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
一切明了。