请教Leemaasn,还是关于创建类。 请大家也来看看。
上贴多谢你帮我把问题解决,还有一事不明白,请大哥解答。
先看此静态过程:
static public void startServer(int port, Class rClass) {
ServerSocket ssocket;
try {
ssocket = new ServerSocket(port);
Socket eSocket = null;
try {
eSocket = ssocket.accept();
MTServerBase mtSB = null;
//***这几句是用的你的方法,传入构造函数的参数。
Class[] types = new Class[] { eSocket.getClass() };
Constructor constructor = rClass.getConstructor(types);
Object[] args = new Object[] { eSocket };
mtSB = (MTServerBase)constructor.newInstance(args);
//***
mtSB.start();
} catch (Exception e) {
try {eSocket.close();} catch (Exception ex) {}
}
} catch (IOException e) {
}
}
我认为既然newInstance能实现,那么new建立应该也能实现。
为什么mtSB = new (MTServerBase)rClass(eSocket);这样不行?此句替换上面“//***”相间的句子。如果类不能强制转换而实例可以强制转换的话,为什么
mtSB = (MTServerBase)constructor.newInstance(args); 可以呢?
注:
rClass是MTServerBase的子类。