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.我该怎么办?
你可以只返回的当前值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)