这个问题的背景可以从我之前的问题中找到。
上一个问题:http ://tinyurl.com/chq4w7t
我有一个Comm
带有发送功能的接口:
public interface Comm
{
public int send(Socket socket, byte[] bytes);
}
我有各种实现接口的类(Server
, Client
,Serial
等)Comm
。我可以将这些类对象作为参数传递给另一个类中的另一个发送函数,该函数充当Comm
对象和各种插件之间的管理器,这些插件可配置为使用这些Comm
类中的一个作为通信媒介。
( Server
, Client
, Serial
, 等) 可以作为参数传递给下面的发送函数
public void Send(Comm com, Socket socket, byte[] message)
{
com.send(null, message);
}
从我之前的问题中,我有一个getClasses
返回 aClass[]
并将 String 作为参数的函数。这用于提供不同的配置选项。
例如,我使用为客户端Class.forName("Client");
返回一个Class
对象。
现在最后我的问题如下:
如何转换Class
为Comm
类型?我做了以下尝试让您了解:(cboxComm
是用于测试我的代码的测试组合框。它包含对象的类名Comm
)
// Some code I have no idea how it works, an explanation would be awesome
// regarding the diamond syntax
Class<? extends Comm> classComm = Class.forName(cboxComm.getSelectedItem().toString());
// Error here, I don't know how to convert or cast it
Comm com = classComm;
// Sending function as described above
send(com, null, null);