Мне было интересно, можно ли назначить уникальный идентификатор для каждого нового класса (не экземпляра!).
Пример того, что я имею в виду:
public class ChildObjectOne extends SuperClass {}
public class ChildObjectTwo extends SuperClass {}
public SuperClass {
private final int ID;
public SuperClass() {
this.ID = newID();
}
}
final ChildObjectOne childObjectOne = new ChildObjectOne();
final ChildObjectTwo childObjectTwo = new ChildObjectTwo();
System.out.println(childObjectOne.getID()); //prints 1
System.out.println(childObjectOne.getID()); //prints 2
childObjectOne = new ChildObjectOne();
childObjectTwo = new ChildObjectTwo();
System.out.println(childObjectOne.getID()); //prints 3
System.out.println(childObjectOne.getID()); //prints 4
Что я вместо этого вы хотите снова напечатать 1 и 2. Он должен генерировать новый идентификатор для каждого нового класса, но если я создаю новый экземпляр этого класса, я хочу, чтобы идентификатор оставался прежним.
Я пытался добиться этого с помощью обобщений:
public SuperClass<T> {
private static int ID;
public SuperClass() {
this.ID = newID();
}
}
public class ChildObjectOne extends SuperClass<ChildObjectOne> {}
public class ChildObjectTwo extends SuperClass<ChildObjectTwo> {}
Я надеялся, что это будет означать прохождение другого T как нового класса, но это не сработало. Вместо этого идентификатор является последним, который был установлен.
Как я могу добиться такого рода системы идентификации?
Заранее спасибо!