我一直在试图生成从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