1.物件為空
user user=null;
user.getname(); //nullpointexception
解決辦法
user user=null;
optional.ofnullable(user).orelseget(user::new).getname();
2.為為空的值設定預設值
string aaa = null;
aaa.tostring(); //nullpointexception
optional.ofnullable(aaa).orelse("");
3.引用裝箱的值參與計算報空指標
我們從資料庫查出來的資料使用integer型別接收的,返回如果沒有的話就是null
integer a = null;
int b = 12 + a;
optional.ofnullable(a).orelse(0);
4.stream 裡面的map對映不允許為空
listuserlist=new arraylist<>();
userlist.stream().collect(collectors.tomap(user::getname,user::getage));
如果getusername或者getage有乙個為空都會報空指標。
解決辦法
mapcollect = userlist.stream().collect(hashmap::new,(k, v) ->k.put(v.getname(),v.getage()),hashmap::putall);
5.equals的使用注意
string hello=null;
「aaa」.equals(hello)
上面這麼寫肯定沒問題
寫成下面的情況就會可能出現空指標
hello.equals("aaa")
一般會把已經變數寫在前面。防止控制真的發生。
6.一些業務上的判斷
這些只是對一些基本的判斷,還有一些就是業務上的
1一般從資料庫查出來的資料都會進行非空的校驗,一般主表都會進行校驗為空直接返回給出其他提示。
當然有一些資料設計上面可能不會使資料為空,你如果對自己的設計很清楚的話可以不加這些判斷,防止冗餘。
比如主表的有乙個附表,這個附表只要主要有資料就一定會建立,那麼我們判斷的時候只需要判斷主表就好了,附表不許再次冗餘的判斷,因為在我們執行新增操作的時候一定是做了校驗的。
7.optional用法的補充
![在這裡插入描述](
optional提供了很多方法供我們使用。
filter方法
![在這裡插入描filtger述](
filter方法使用函式式介面predicate接受乙個boolean型別的引數
首先獲得乙個optional例項
optional> userlistoption = optional.of(userlist);
如果直接使用stream流的filter方法需要對stream流前的集合進行非空判斷,使用optional包裝以後可以省去判斷
listnozhangsanlist = userlistoption
.filter(e -> !e.contains(new user("張三", 12))).orelseget(arraylist::new);
得到乙個集合裡面不含張三的集合
也可以用於對物件的操作
optionaluseroption = optional.of(user);
user user1 = useroption.filter(e -> e.getname() == null).orelseget(user::new);
map方法
user user=new user("王五",null);
integer age = optional.of(user).map(e -> e.getage()).orelse(1);
system.out.println(age);
system.out.println(user.getage());
結果如下:
null
ifpresent()
user user2 = new user("zhaosi", 1);
optionals = optional.of(user2).map(e -> e.getname());
s.ifpresent(e-> );
結果如下
值存在下面的**
user user2 = new user("zhaosi", 1);
optionals = optional.of(user2).filter(e->e.getage()==1).map(e -> e.getname());
s.ifpresent(e-> );
結果沒有列印,說明,只有當返回的optional物件的值不為空的時候才會呼叫這個方法
flatmap 方法是將幾個集合合併成乙個集合
lftp的使用以及常見的指令
lftp的意思是用lftp登入到ftp伺服器上 lftp ip p port u user,password e commands bye ftp裡面常用的指令 1 登入ftp 2 lftp中文亂碼問題 對於像我這樣的新手,登入後看到的都是中文亂碼 因為一般本地都是utf 8的編碼 怎麼半呢,用 s...
碼雲的使用以及常見的問題
1.開啟終端 輸入命令 cd ssh 2.然後輸入ssh keygen t rsa c winner qq.com winner qq.com 為自己的郵箱喲 3.cat pub 產生公鑰匙 如果顯示秘鑰已經存在可以,把id rsa 檔案刪掉 rm id rsa 再重新執行上面的命令 將其公鑰新增到...
CMFCColorButton的使用以及重繪
cmfccolorbutton是visual studio 2008 sp1版本以上提供的顏色採集器。系統環境 windows 7 程式設計環境 visual studio 2008 sp1 下面介紹下使用步驟 1.新建基於對話方塊的工程,名稱為mycolorbuttondemo 2.拖動乙個按鈕到...