获取静态java方法以返回最高变量值

时间:2013-04-08 03:14:42

标签: java oop object methods static

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

private static int nextID = 0;

我的构造函数中使用了哪个

Vehicle() {

  idNum = nextID++

 }

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

3 个答案:

答案 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;
 }