【发布时间】:2017-05-03 04:24:22
【问题描述】:
这一行给了我未经检查的演员表警告
this.gameSocket = (U) game.getGameSocket();
SocketHandler.java:
public class SocketHandler<T extends Game, U extends GameSocket> extends
Listener
{
protected T game;
protected U gameSocket;
public SocketHandler(T game)
{
this.game = game;
this.gameSocket = (U) game.getGameSocket();
}
}
Game.java:
public class Game<T extends GameSocket>
{
protected T gameSocket;
public T getGameSocket()
{
return gameSocket;
}
public Game()
{
}
}
GameSocket.java:
public class GameSocket<T extends Game>
{
protected T game;
protected int port;
public GameSocket(T game, int port)
{
this.game = game;
this.port = port;
}
}
我觉得这里似乎存在一般流通问题,但代码运行良好。但是,可能有更好的方法来做我在这里做的事情。
【问题讨论】:
-
那么,你的游戏有socket,同时socket也有游戏,对吧?
-
是的,正确。由于彼此之间的可靠性,它们具有一对一的关系。
-
你能解释一下为什么
Game和GameSocket似乎有循环依赖关系吗? -
游戏会调用socket的哪些方法,socket会调用游戏的哪些方法?
-
我使用套接字中的游戏类来处理来自客户端的数据包并对其进行处理。套接字类需要引用游戏类才能做到这一点。游戏类需要引用的socket类来初始化socket并绑定。