我有两个接口:MinServer和MaxServer。 MaxServer扩展了MinServer。那么,以下代码正常吗?

MinServer server=foo.getUndefinedServer();
...code according to MinServer
if (isThisServerMax){
  server=(MaxServer)server;
...code according to MaxServer
}
...code according to MinServer

最佳答案

不,这是不正确的。

在此刻:

server=(MaxServer)server
...code according to MaxServer


您正在将MaxServer强制转换为MinServer(可以),然后将强制转换的结果分配给MinServer ...因此,嗯,您与开始的位置相同。

如果您这样更改:

MaxServer server2 = (MaxServer)server
...code according to MaxServer using server2


那将是正确的。

10-05 23:34