Java - 对象引用或标识符?

标签 java

我目前正在创建一个大项目,因此我希望一切都尽可能高效地进行。

在我的项目中,我有一个名为 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 实例还有几个其他原因:

  1. 我们可以假设您的 Player 需要访问 Team 对象。拥有实例比必须进行查找更好。
  2. 如果您保留 ID 而不是实例,则可能没有任何对所保留对象的引用,并且可能会被垃圾回收。我知道这可能不会发生在你的情况下,因为你将所有团队都放在一张 map 中,但这仍然是一种风险,因此应该避免。

关于Java - 对象引用或标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7596430/

相关文章:

Java进程永不停止

java - 迁移到 Java 1.4 到 Java 1.5+ 时避免 BigDecimal 的问题

Java Raw Type 和泛型交互

java - 使用 TextureRegion (LibGDX) 在 Java 中绘制部分 Sprite

java - 当所有节点都是模拟时,如何使用 EasyMock 测试 "tree of calls"?

java - H2 sql如何将列设置为auto_increment

java - Spring 启动 : Refresh Application Context on Classpath Changes

c# - == 是 Equal() 方法的快捷方式吗?

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本

Java JFrame 方法 pack()