gpt4 book ai didi

java - 如何解决此未经检查的强制转换警告?

转载 作者:行者123 更新时间:2023-11-30 06:45:29 26 4
gpt4 key购买 nike

这一行给了我未经检查的强制转换警告

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();
}
}

游戏.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;
}
}

我觉得这里好像存在一般的循环问题,但代码工作正常。然而,可能有更好的方法来完成我在这里所做的事情。

最佳答案

您有一个通用循环:GameSocket 的通用类型扩展了 Game,但 Game 的通用类型扩展了 GameSocket!

要解决此问题,我建议将 GameSocket 的类声明更改为:

public class GameSocket<T> {
...
}

然后,您可以将 Game 的类声明更改为:

public class Game<T extends GameSocket<T>> {
...
}

最后,您可以将 SocketHandler 的类声明更改为:

public class SocketHandler<T extends Game<U>, U extends GameSocket<U>> extends Listener {
...
}

这使得所有内容都是类型安全的并且警告消失了。

您甚至可以在检索 game.getGameSocket() 时删除显式转换 (U)

关于java - 如何解决此未经检查的强制转换警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com