java - 如何将一个接口用作具有多个实现的其他接口的参数?
问题描述
我正在尝试解决这个问题。
有一个公共接口StudentValidation有这个方法:
default public void validateStudent(ObjectA inputA){};
default public void validateStudent(ObjectB inputB, ObjectC inputC){};
它在两个不同的类中有实现。
所以我有
ValidatorStudentSchoolBased处理validateStudent(ObjectA inputA) 的值...
和
ValidateStudentsHome基于该过程validateStudent(ObjectB inputB, ObjectC inputC)
所以现在通用接口没有多大意义,我想知道是否有任何策略、接口/实现可以用于这种情况,这样我就可以发送一个参数,比如
default public void validateStudent(MyObject myObject)
到目前为止,我创建了 MyObject -> StudentClass 作为一个空接口什么是一个空接口用于并具有两个根据需要的特定实现
所以我做了这个
public interface StudentClass {}
接着
public class StudentClassSchoolBased implements StudentClass () {
ObjectA inputA;
//getters and setters
}
我还将创建实现StudentHomeBased
然后编辑 StudentValidation 像
validateStudent(StudentClass myObject)
并更改实现,例如:
ValidatorStudentSchoolBased(StudentClassHomeBased myObject)
说与接口不匹配(我不能覆盖),因为接口的类型是StudentClass,即使StudentClassHomeBased实现了它,也不是诀窍,知道如何做我想做的事吗?
基本上,我想做的是这个
创建一个接口方法,作为参数接收另一个具有多个实现的接口,这可能吗?
解决方案
我认为您的情况可以通过使用泛型和参数化来解决StudentValidation
。这是你想要达到的目标吗?
public interface StudentValidation<T>{
public void validateStudent(T student);
}
public class ValidatorStudentSchoolBased implements
StudentValidation<StudentClassSchoolBased>{
@Override
public void validateStudent(StudentClassSchoolBased student) {
}
}
public class ValidateStudentsHomeBased implements
StudentValidation<StudentClassHomeBased>{
@Override
public void validateStudent(StudentClassHomeBased student) {
}
}
推荐阅读
- python - 有没有办法在不循环代码的情况下在 python 中导入变量?
- php - 将 PHP 正则表达式爆炸数组插入 MySQL 表
- python - 如何过滤两列上的数据框并输出累积和
- java - 如何使用 Android 中的单选按钮计算分数?
- python - Bot 无法处理与功能并行的多个请求 (discord.py)
- php - 如何改进我的 PHP 脚本以插入到多个表中?
- laravel - 将“Nova Filemanager”与“Nova TinyMCE 文本编辑器与图像”包集成
- php - 尝试获取非对象的属性“名称”如何解决此问题
- java - 添加新项目后,带有自定义适配器的 ListView 崩溃?
- machine-learning - 在创建良好的深度神经网络中选择参数