我一直在試圖生成從1開始,像這樣的類實例的唯一ID:生成獨特的自動遞增的實例ID
public abstract class foo {
static int ID = 0;
final int id;
public foo() { this.id = ++ID; }
}
我才明白,我有需要此行爲的若干類等我試圖從中繼承一個abstract class
,但我發現static
字段不能真正被繼承。
有沒有什麼方法可以在Java中重用這種常見行爲?
編輯:
我沒有說清楚,但我需要的索引每個子類是不僅造型獨特,而且是連續的。
舉例來說,如果我有bar
和baz
從foo
繼承:
bar b1 = new bar();
baz b2 = new baz();
bar b3 = new bar();
b2
應該有id == 1
,並b3
應該有id == 2
。
可能重複[Java的給予對象的每個實例的唯一編號(http://stackoverflow.com/questions/21708765/java-give-每個對象一個唯一編號) – 2014-11-04 21:33:31
不,它通常是按類(或類的層次結構)進行的。而且你不應該抽象類,因爲你需要一個計數器 – 2014-11-04 21:34:24
@RC。這不是該問題的重複。這個問題是關於如何在多個類中重用(已經理解的)行爲。 – 2014-11-04 21:40:55