作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应用程序,用户可以在其中玩多种类型的游戏。每个游戏都扩展了 Game 类,其中包含与游戏相关的各种内容。每个游戏还有一个关联的用户类,它扩展了 User
(包含电子邮件、用户名等),例如 ChessUser
和 ScrabbleUser
,其中包含统计信息和其他内容有关游戏的用户信息。
在每个 Game
类中,我需要当前正在玩游戏的所有用户的列表。由于所有游戏都需要此列表,我想将其放置在 User
类中,但由于它包含玩游戏的用户类型(ChessGame 将包含 ChessUsers 列表),如果没有,我无法做到这一点检索时转换值,这是我宁愿不做的。有没有办法在不转换检索到的值的情况下执行此操作?
一些示例代码:
public class Game {
private List<Player> players;
public Player getPlayer(int index) {
return players.get(index);
}
}
public class Player {
private String username;
private String email;
}
public class ChessGame extends Game {
// getPlayer now needs to return a ChessPlayer, hopefully without casting
}
public class ChessPlayer extends Player {
private int checkmates;
}
最佳答案
使用泛型:
public class Game<T extends Player> {
private List<T> players;
public T getPlayer(int index) {
return players.get(index);
}
}
public class Player {
private String username;
private String email;
}
public class ChessPlayer extends Player {
}
public class Chess extends Game<ChessPlayer> {
}
关于java - 指定子类中集合的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818349/
我是一名优秀的程序员,十分优秀!