[英]A elegant way to implement ID on a abstract class
我有一個抽象類。 我希望每個實例都有唯一的ID。 我已經實現了:
public abstract class MyAbstractClass{
static AtomicInteger nextId = new AtomicInteger();
private int id;
public MyAbstractClass() {
id = nextId.incrementAndGet();
}
}
public class MyClass extends MyAbstractClass {
public MyClass(){
super();
}
}
除了沒有什么可以強迫子類調用構造函數的部分以外,此方法有效。
有沒有一種方法可以為抽象類實現全局ID?
沒有什么可以強迫子類調用構造函數。
除非父構造函數在層次結構上錯誤構建,否則您無法阻止子類調用super()
。
所謂“層次錯誤”,是指存在一個不基於其無參數構造函數的父構造函數。 例如,
public MyAbstractClass() {
id = nextId.incrementAndGet();
}
public MyAbstractClass(String s) {
// ignores to call this();
}
否則,任何孩子最終都會調用super()
,從而觸發您的id初始化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.