我創建汽車對象和我保持與變量,創建汽車數量的計數的過程中加入一個變量到對象的名稱「的值carCounter。」 CarCounter從0開始,我想命名Car objects car(carCounter),並在每次創建汽車時增加計數器,以便汽車命名爲car0,car1,car2等...我怎麼能在做對象的創建?創建對象
喜歡的東西租車()車(+ carCounter +)=新車(); ?
我創建汽車對象和我保持與變量,創建汽車數量的計數的過程中加入一個變量到對象的名稱「的值carCounter。」 CarCounter從0開始,我想命名Car objects car(carCounter),並在每次創建汽車時增加計數器,以便汽車命名爲car0,car1,car2等...我怎麼能在做對象的創建?創建對象
喜歡的東西租車()車(+ carCounter +)=新車(); ?
您可以維護一個static counter
變量,並且每次創建class
的實例時,增加該變量併爲該實例設置該變量。
public class YourClass {
private static counter = 0;
private String name;
public YourClass() {
name = "car" + counter;
counter++;
}
}
把靜態計數器放在Car的構造函數中,會像魅力一樣工作... – Frank
哇,嗯。很簡單。我不知道爲什麼我沒有想到它..謝謝!只是一個問題。我將如何實例化類的一個對象?只需輸入'新車'? – user939287
@ user939287。有些事情你突然知道了。所以不應該是一個驚喜。一般來說,只有在你需要時纔會學習。 :) –
我想你想要的是一個Array:
Car[] cars = new Car[3];
cars[0] = new Car();
cars[1] = new Car();
cars[2] = new Car();
這也可以讓你通過varaible參考指數(什麼你調用數):
int n = 1;
Car carAtIndexN = cars[n];
如果你要初始化一個整套的汽車,最好在一個循環中這樣做:
int totalCarCount = 10;
Car[] cars = new Car[totalCarCount];
for (int i=0; i<totalCarCount; i++) {
cars[i] = new Car();
}
public Class Car {
public static int counter= 0;
String name="";
public Car() {
counter++;
name= "car"+ counter;
};
}
那就是都爲汽車類。
爲了保持線程安全的,我會建議使用static AtomicLong
變量的任務,這將遞增,如在構造函數的最後一個命令。這樣,如果構造函數中有Exception
,則計數器將保持不變。
public final class Car {
private static AtomicLong carCounter = new AtomicLong();
public Car() {
//do the dirty things here
carCounter.incrementAndGet();
}
public static long getCounterValue() {
return carCounter.get();
}
}
我還要使課堂final
,因爲如果一個類繼承了這一個,反被保存後,它的構造可以執行的操作,這將留在不一致的狀態的東西(計數器不能反映創建實例)的數...
有了這麼多的限制,這是不是一個非常有用的情況下,是不是?我認爲最好的解決方案是使用abstract factory來創建實例,並跟蹤計數器。也許抽象工廠應該是一個Singleton ...
你的'Car'是什麼樣的? –