背景:
我有一个类列表(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 对象作为基本通信。
通讯对象:
串行
客户
服务器
等等
插件:
插件1
插件2
等等
管理器类将接收来自插件的发送控制数据包的请求,管理器只会将请求排队并为每个请求调用发送函数
问题:
如何访问send(Socket socket, byte[] message);
管理器或插件本身中的方法?这涉及创建一个可以调用 send 的通用类对象,根据插件配置,从 comm 对象的字符串名称从 comm 类之一转换。
每个插件使用哪个 comm 类的配置存储在数据库中。从字符串转换为 Class 对象效果很好。我只需要找到一种方法来调用驻留在接口 Comm 中的发送函数,该接口由所有 comm 类实现。这必须是通用的。可能会添加更多的通讯类。