簡體   English   中英

Java:從實現接口的類訪問接口函數

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

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