回答
在你的蘋果類有static int nextId
並在構造函數中增加它。
確保遞增的代碼是原子的可能是謹慎的,所以你可以這樣做(使用AtomicInteger)。這將保證如果兩個對象完全同時創建,它們不共享相同的ID。
public class Apple {
static AtomicInteger nextId = new AtomicInteger();
private int id;
public Apple() {
id = nextId.incrementAndGet();
}
}
使用java.util.UUID.randomUUID()
它不是int
,但它保證是唯一的:
表示一個不可變的通用唯一標識符(UUID)的類。
如果你的對象以某種方式(通過某些持久性機制爲例)管理,通常是該管理器生成的ID的情況下 - 以一張ID從數據庫,例如。
相關:Jeff Atwood's article on GUIDs(UUIDs)。不過,它與數據庫相關,但從您的問題中不清楚您是否希望持久化對象。
+1,用於羣集安全解決方案。 – 2010-10-24 18:06:38
還有另一種獲取唯一ID的方法。而不是使用int或其他數據類型,只需創建一個類:
final class ID
{
@Override
public boolean equals(Object o)
{
return this==o;
}
}
public Apple
{
final private ID id=new ID();
}
線程安全無需同步!
不錯,但不是當需要可比ID時。 – Jarekczek 2012-05-30 13:08:26
- 1. unproxy Hibernate對象的優雅方式
- 2. 在Java中做對象轉換的簡單/優雅的方法?
- 3. 優雅的方式來「YYYY-MM」轉換爲Date對象在Java中
- 4. 優雅的方式
- 5. 優雅的方式
- 6. 最優雅的方式來添加從Java中的矢量不同的對象
- 7. 實現抽象類的優雅方式
- 8. 分塊數據的優雅方式
- 9. 在C++中迭代的優雅方式
- 10. 訪問對象屬性的更優雅或有效的方式?
- 11. 比較執行對象的更優雅的方式可比
- 12. 篩選對象的複雜陣列優雅的方式
- 13. 根據其他值設置對象的更優雅的方式
- 14. 優雅的方式來測試新的對象創建
- 15. 優雅的方式失敗
- 16. 最優雅的方式來創建一個JSON對象
- 17. 在python中打印「====中間對齊標題====」的優雅方式
- 18. 優雅對象比較
- 19. 優雅對象擴展
- 20. 在Python中分析日期的優雅方式
- 21. 讓UI對象在聯合5中觸及的最優雅方式是什麼?
- 22. 如何在python中以優雅的方式動態創建對象?
- 23. 優雅地重新附加方法在web worker中對象?
- 24. Ruby中更優雅的方式
- 25. 最優雅的方式做在Haskell
- 26. Java Thread.suspend()優雅
- 27. Django:優雅的方式來處理缺失的ID不是404()
- 28. 使用CUBEVALUE公式的優雅方式
- 29. 切換在Java 1.6的優雅方式爲字符串
- 30. 如何以優雅的方式「改變」大對象中的單個值?
你的Apple類是什麼樣的? – BoltClock 2010-10-24 17:59:38
如何使用UUID? http://download.oracle.com/javase/1.5.0/docs/api/java/util/UUID.html – miku 2010-10-24 18:01:37
你可以創建一個全局計數器,並在構造函數中分配id。我不確定這是否是最好的主意。 – Orbit 2010-10-24 18:01:53