在我的程序中,我声明了一个静态变量:
private static int nextID = 0;
在我的构造函数中使用
Vehicle() {
idNum = nextID++
}
基本上,这样做是为了确保每次我制作一个新的 Vehicle 对象时,它都会有一个唯一的标识号。现在我想创建一个静态方法,该方法将返回迄今为止使用的最高 ID 号。我该怎么做?
nextID
您可以只返回...的当前值
但是请注意,您的类不是线程安全的。换句话说,如果同时创建了两个不同的对象,它们都可以获得相同的“唯一”ID。为了防止这种情况,您需要某种锁定。
private static int nextID = 0;
private static Object lockObj = new Object();
public static int highestID()
{
synchronized(lockObj)
{
return nextID-1;
}
}
public Vehicle() {
synchronized(lockObj)
{
idNum = nextID++;
}
}
你自己很好地回答了这个问题。由于nextID
每次创建对象时您的变量都会不断增加,因此每次获取该变量的值时,它始终是最高的。正如您所说,您所需要的只是创建一个返回当前值的静态方法nextID
。简单地:
public static int getNextID(){
return nextID;
}
弄清楚了!
Public static int highestID() {
return nextID;
}