java的uuid有什么用_java – 什么是有效的UUID?
我生成UUID,并在我的代碼中對正則表達(dá)式進(jìn)行有效;我剛遇到困擾我的問題
以下是生成UUID的代碼(在mongodb上下文中)
import java.util.UUID;
... ...
Document setOnInsert = new Document(Params.sender, UUID.randomUUID())
.append(Params.userDevice, userDevice)
.append(Params.hostId,"");
這是驗(yàn)證UUID的代碼;我從這個(gè)post復(fù)制了正則表達(dá)式
static final Pattern UUID = Pattern.compile("([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})");
public static boolean isUUID(String uuid){
if(uuid == null){
return false;
}else{
return UUID.matcher(uuid).matches();
}
}
以下是我遇到問題的2個(gè)UUID
aa4aaa2c-c6ca-d5f5-b8b2-0b5c78ee2cb7
b24dd64c-de6b-5bf6-6283-aa2167cc93a7
這兩個(gè)UUID是由上述代碼生成的;驗(yàn)證方法(isUUID())在我的最新調(diào)試中判斷它們無效;但是我把這些UUID發(fā)布到了在線validator,它說好了
這是我的系統(tǒng)信息
wjz@bj:~$java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
wjz@bj:~$
wjz@bj:~$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
wjz@bj:~$
一些背景:我一直在研究jdk 1.8.0_111;這些UUID已經(jīng)生成,沒有問題.然后我今天升級到1.8.0_121,遇到這個(gè)問題……
所以我的問題是:上面提到的UUID是正確還是錯(cuò)誤?誰相信,發(fā)電機(jī)或驗(yàn)證
解決方法:
我的建議是,不要重新發(fā)明輪子.
基本上,如果使用UUID.randomUUID()生成ID,則無需驗(yàn)證它們.
如果你好奇他們可能會被手動操作.
您可以使用UUID.fromString(yourUUID)并捕獲可能拋出的IllegalArgumentExcepetion和NumberFormatException.
引發(fā)IllegalArgumentExcepetion:
If name does not conform to the string representation as described in toString()
此外,如果UUID已正確轉(zhuǎn)換,您可以在后面檢查
UUID id = UUID.fromString(yourUUID);
if(id.toString().equals(yourUUID){
//success
}
標(biāo)簽:java,regex,uuid,java-8
來源: https://codeday.me/bug/20190722/1501835.html
總結(jié)
以上是生活随笔為你收集整理的java的uuid有什么用_java – 什么是有效的UUID?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中字符串后加Box_字符串未显示
- 下一篇: 前后落差大用什么词语_语文考题一共有五类