我目前正在创建一个大项目,因此我希望一切都尽可能高效地进行。
在我的项目中,我有一个名为 Teams 的类,其中包含一个 Team 对象的 HashMap(Integer, Team)。 Team 的每个实例都有一个唯一的 ID(整数)。
还有一个名为Player 的对象。 Player 的每个实例都可以分配给一个 Team(但并非总是如此)。
现在,我想知道了解球员被分配到哪个球队的最佳方法是什么:
-> 将团队的 ID 存储在 Player (private int team) 中,然后使用此 ID 从 Teams 中的 HashMap 中获取团队。
-> 在 Player 中存储对团队的引用(私有(private)团队)
有谁知道哪个更好,最重要的优点、缺点和危险是什么?
谢谢!
最佳答案
使用私有(private)团队!除非有充分的理由,否则其他类不需要知道对象的 ID。不要在 Java 中实现数据库结构。 Java 被设计为基于对象的,以这种方式使用它。
您应该持有 Team 实例还有几个其他原因:
- 我们可以假设您的 Player 需要访问 Team 对象。拥有实例比必须进行查找更好。
- 如果您保留 ID 而不是实例,则可能没有任何对所保留对象的引用,并且可能会被垃圾回收。我知道这可能不会发生在你的情况下,因为你将所有团队都放在一张 map 中,但这仍然是一种风险,因此应该避免。
关于Java - 对象引用或标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7596430/