Java匿名內部類別的傳值
匿名內部類別
在Nutz中,存在大量需要使用匿名內部類的情況,很多童鞋都對傳值很困惑,所以我這裡說明一下
傳入:
//匿名内部类,只能访问final的本地变量及方法参数 public void addUser(final String name, String passwd, final String userType) { User user = null; if ("admin".equal(userType)) user = new AdminUser(name, passwd); //仅作演示. else user = new User(name, passwd); final User _user = user; //因为user变量不能设置为final,所以需要新加一个变量来中转 Trans.run(new Atom(){ public void run() { dao.insert(_user); if (log.isDebugEnable()) log.debugf("Add user id=%d, name=%s , type=%s", _user.getId(), name, userType); } }); }
登入後複製
傳出(獲取方法返回值等等):
方法1 – 物件陣列法透過一個final的Object物件陣列,存放所需的值
public long countUser(final String userType) { final Object[] objs = new Object[1]; Trans.run(new Atom(){ public void run() { objs[0] = dao.count(User.class, Cnd.where('userType', '=', userType)); } }); return ((Number)objs[0]).longValue(); }
登入後複製
方法2 – ThreadLocal法透過一個ThreadLocal來存放結果,這個ThreadLocal可以是靜態的,供全app使用的
private static final ThreadLocal re = new ThreadLocal(); //自行补上泛型Object public long countUser(final String userType) { Trans.run(new Atom(){ public void run() { re.set(dao.count(User.class, Cnd.where('userType', '=', userType))); } }); return ((Number)re.get()).longValue(); //严谨一点的话,应该将ThreadLocal置空 }
登入後複製
方法3 – Molecule法Molecule類別是Nutz內建的抽象類別,實作Runnable和Atom介面,新增了兩個取得/設定值的方法.
public long countUser(final String userType) { Molecule mole = new Molecule() { //需要自行补齐泛型 public void run() { setObj(dao.count(User.class, Cnd.where('userType', '=', userType))); } }; Trans.run(mole); return ((Number)mole.getObj()).longValue(); }
登入後複製
reee
匿名內部類別的傳值相關文章請關注PHP中文網!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)