[英]How to use an interface as parameter of other interface with multiple implementations?
我正在努力解決這個問題。
有一個具有此方法的公共接口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 作為一個空接口什么是一個空接口,根據需要有兩個特定的實現
所以我做了這個
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) {
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.