java可以强制泛型类型接受其参数化类型,将其作为类型的唯一具体子类,而不是该类型本身吗
class Team<E extends Player> {
E player1;
E player2;
}
abstract class Player{
}
class CricketPlayer extends Player{}
class BaseballPlayer extends Player{}
class FootballPlayer extends Player{}
我现在明白了,我可以创建如下球队,这些球队拥有相同类型的球员,这将是可行的
Team<CricketPlayer> cricketTeam = new Team<>()
Team<BaseballPlayer> baseballTeam = new Team<>()
但有人也可以创建一个团队,如下所示
Team<Player> invalidTeam = new Team<>();
在这种情况下,player1
可以设置为FootballPlayer
,而player2
可以设置为CricketPlayer
,因为两者都是从Player类扩展而来的。所以现在一个队中的两名球员是不同类型的。我的目标失败了,我希望一支球队拥有同样类型的球员。有没有办法做到这一点。提前谢谢你的帮助
# 1 楼答案
这样的等级制度是无法实现的
尽管可以使用
Team<E extends Player>
中的下一个方法检查与前一个值的兼容性:这将使可维护性变得复杂
那么,为什么不能只使用
Team<BaseballPlayer>
或Team<BaseballPlayer>
来限制内部的类型呢