[英]Implement interface other than from class signature
例如,讓我說,我想在jar庫中對一些完全符合我的自定義界面定義的類進行分組。 由於我無法編輯jar內的類以實現我的接口,是否有其他方法可以像使用它們來實現我的接口一樣使用這些類?
示例:我有不可編輯的類A
和B
我在另一個類中有一個靜態方法,該方法接受屬於接口I
對象。 如何在不使方法接受所有Object
對象的情況下傳遞A
和B
對象。 我想給A
和B
一個只有他們才能擁有的新功能。
使用Adapter
設計模式https://en.wikipedia.org/wiki/Adapter_pattern 。 從庫中為類創建包裝器,使包裝器實現您的接口,使包裝器使用該類的方法。
從您的編輯中並根據我的評論:創建一個將實現您的接口I並用作類A和B的包裝的類。這是Facade Design Pattern 。 這是代碼中一個非常基本的簡單示例:
public interface I {
void methodFromExternalAClass();
void methodFromExternalBClass();
}
public class MyClass implements I {
@Override
public void methodFromExternalAClass() {
new A().someMethod();
}
@Override
public void methodFromExternalBClass() {
new B().someMethod();
}
}
如果要確定給定的類是否在類的分組中(類似於使用標記接口),則可以保留“ Class
對象的列表,然后引用該列表以查看特定的類是否在類的分組中。 如果這不是您想要的,請澄清。 我想發表評論以澄清問題,但我沒有聲譽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.