【发布时间】:2019-09-29 01:44:09
【问题描述】:
我正在开展一个类似于更简单的 Youtube 克隆的学校项目。我知道 Video 和 Playlist 类的属性之一是字符串代码,只要它始终是唯一的,我可以以任何我想要的方式生成它。所以我很难使用UUID(虽然我对它很陌生),而且视频和播放列表可以有相同的代码,因为它们在我的代码中的不同库中,所以理论上我想要2个UUID生成器,一个用于视频,一个用于播放列表,因此代码可以以这种方式重叠。
我想制作一个单例,这样生成器就不会比我需要的多,而且我总是可以保证我得到唯一的代码。这是我得到的。
import java.util.UUID;
public class CodeGenerator {
private static CodeGenerator singleInstance = null;
private UUID videoGen;
private UUID listGen;
private CodeGenerator() {
}
public static CodeGenerator getInstance() {
if (singleInstance == null)
singleInstance = new CodeGenerator();
return singleInstance;
}
public String getCodeVideo() {
return videoGen.randomUUID().toString();
}
public String getCodePlaylist() {
return listGen.randomUUID().toString();
}
}
但是 Eclipse 在我的两次获取中都警告我,我应该将此实例引用更改为静态引用,而我从来没有真正擅长静态的东西,因为我想摆脱所有这些代码警告我的项目,谁能告诉我一个解决我正在寻找的问题?
P.S 我尝试使用两种不同的方法在 Test 类中生成一些代码,但它们的结果总是不同的,如预期的那样。代码运行良好,我可以看到,但我很害怕它可能会给我带来问题。
【问题讨论】:
-
randomUUID()是一个static方法,在实例上调用它(你甚至没有正确初始化)没有意义。这就是 Eclipse 告诉你的。
标签: java random static singleton uuid