[英]Java: Accessing a interface function from a class which implements the interface
背景:
我有一個類( comm對象)列表,可能增加也可能不增加。 它們都在Comms接口中實現相同的方法:
public int send(Socket socket, byte[] message);
我通過在方法的packageName參數中指定包名來獲取這些comm類的列表(在函數內部不包括包名本身,並進行一些過濾以獲得名稱包comm):
public static Class[] getClasses(String packageName); (modified it a bit from the link below)
http://www.dzone.com/snippets/get-all-classes-within-package
然后我有幾個插件可配置為使用其中一個comm對象作為基本通信。
Comm對象:
串行
客戶
服務器
等等
插件:
plugin1
plugin2
等等
管理器類將收到從插件發送控制數據包的請求,管理器將對請求進行排隊,並為每個請求調用send函數。
題:
如何訪問方法send(Socket socket, byte[] message);
在經理或插件本身? 這涉及創建一個泛型類對象,它可以調用send,它根據插件配置從comm對象的字符串名稱中的一個comm類轉換而來。
每個插件使用comm類的配置存儲在數據庫中。 從字符串轉換為Class對象效果很好。 我只需要找到一種方法來調用send函數,該函數位於Comm接口中,該接口由所有comm類實現。 這必須是通用的。 可以添加更多comm類。
為管理器提供引用類型的Comm
接口並調用其send
方法。
實例化管理器時,請將其注入您希望的實現。
聽起來你已經有了虛擬構造函數/工廠模式,用於實例化每種類型的Comm
實現。
這是所有依賴注入引擎的常見模式(例如Spring,Guice等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.