在我的程序中,我声明了一个静态变量:
private static int nextID = 0;
我的构造函数中使用了哪个
Vehicle() {
idNum = nextID++
}
基本上,这样做是为了确保每次制作一个新的Vehicle对象时,它都会有一个唯一的识别号。现在我想创建一个静态方法,它将返回到目前为止使用的最高IDnumber。我该怎么做?
答案 0 :(得分:5)
您只需返回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++;
}
}
答案 1 :(得分:2)
你自己很好地回答了这个问题。由于每次创建对象时nextID
变量都会增加,因此每次获取该变量的值时,它始终是最高的。正如您所说,您所需要的只是创建一个返回nextID
当前值的静态方法。简单地:
public static int getNextID(){
return nextID;
}
答案 2 :(得分:2)
想出来了!
Public static int highestID() {
return nextID;
}