-1

在我的程序中,我声明了一个静态变量:

private static int nextID = 0;

在我的构造函数中使用

Vehicle() {

  idNum = nextID++

 }

基本上,这样做是为了确保每次我制作一个新的 Vehicle 对象时,它都会有一个唯一的标识号。现在我想创建一个静态方法,该方法将返回迄今为止使用的最高 ID 号。我该怎么做?

4

3 回答 3

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++;
    }
}
于 2013-04-08T03:19:15.957 回答
2

你自己很好地回答了这个问题。由于nextID每次创建对象时您的变量都会不断增加,因此每次获取该变量的值时,它始终是最高的。正如您所说,您所需要的只是创建一个返回当前值的静态方法nextID。简单地:

public static int getNextID(){
    return nextID;
}
于 2013-04-08T03:19:34.863 回答
2

弄清楚了!

Public static int highestID() {

   return nextID;
 }
于 2013-04-08T03:20:17.677 回答