【发布时间】:2018-10-25 15:51:18
【问题描述】:
我正在尝试解决这个问题。
有一个公共接口StudentValidation有这个方法:
default public void validateStudent(ObjectA inputA){};
default public void validateStudent(ObjectB inputB, ObjectC inputC){};
它在两个不同的类中有实现。
所以我有
ValidatorStudentSchoolBased 处理 validateStudent(ObjectA inputA)... 的值
和
ValidateStudentsHomeBased 处理 validateStudent(ObjectB inputB, ObjectC inputC)
所以现在通用接口没有多大意义,我想知道是否有任何策略、接口/实现可以用于这种情况,这样我就可以发送一个像
这样的参数default public void validateStudent(MyObject myObject)
到目前为止,我创建了 MyObject -> StudentClass 作为一个空接口 What is an Empty interface used for 并根据需要有两个特定的实现
所以我这样做了
public interface StudentClass {}
然后
public class StudentClassSchoolBased implements StudentClass () {
ObjectA inputA;
//getters and setters
}
我还将创建实现StudentHomeBased
然后像编辑 StudentValidation 一样
validateStudent(StudentClass myObject)
并更改如下实现:
ValidatorStudentSchoolBased(StudentClassHomeBased myObject)
说与接口不匹配(我不能覆盖),因为接口的类型是 StudentClass 并且即使 StudentClassHomeBased 实现它,也不是诀窍,任何知道如何做我想做的事吗?
基本上,我想做的就是这个
创建一个接口方法,作为参数接收另一个具有多个实现的接口,这可能吗?
【问题讨论】:
-
抱歉,这里发生了很多事情,我无法准确确定您的错误是什么以及它适用于什么代码。能否请edit澄清一下?
-
你把
default public void doSomething(MyInterface myInterface )放在哪里了? -
一般来说,接口的目的是确保它的所有实现可以处理接口期望的数据。因此,implementorA 和implementorB 不应处理不同的方法。两种实现都需要定义这两种方法。
-
感谢cmets,我刚刚更新了,请看@JoeC
-
@aka-one 请看一下
标签: java