簡體   English   中英

如何使用一個接口作為具有多個實現的其他接口的參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM