我创建汽车对象和我保持与变量,创建汽车数量的计数的过程中加入一个变量到对象的名称“的值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'是什么样的? –