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

use*_*884 -1 java oop methods static object

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

private static int nextID = 0;
Run Code Online (Sandbox Code Playgroud)

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

Vehicle() {

  idNum = nextID++

 }
Run Code Online (Sandbox Code Playgroud)

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

Pet*_*nov 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++;
    }
}
Run Code Online (Sandbox Code Playgroud)