首頁 Java java教程 Java匿名內部類別的傳值

Java匿名內部類別的傳值

Dec 15, 2016 pm 01:01 PM
匿名內部類別

在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

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

Java 匿名內部類別如何解決記憶體洩漏問題? Java 匿名內部類別如何解決記憶體洩漏問題? May 01, 2024 pm 10:30 PM

Java 匿名內部類別如何解決記憶體洩漏問題?

Java 匿名內部類別的設計模式有哪些? Java 匿名內部類別的設計模式有哪些? May 02, 2024 pm 04:42 PM

Java 匿名內部類別的設計模式有哪些?

Java 匿名內部類別有哪些優勢? Java 匿名內部類別有哪些優勢? Apr 30, 2024 am 11:39 AM

Java 匿名內部類別有哪些優勢?

Java 匿名內部類別的生命週期是怎麼樣的? Java 匿名內部類別的生命週期是怎麼樣的? May 01, 2024 pm 04:06 PM

Java 匿名內部類別的生命週期是怎麼樣的?

Java 匿名內部類別有哪些常見錯誤? Java 匿名內部類別有哪些常見錯誤? May 02, 2024 am 09:03 AM

Java 匿名內部類別有哪些常見錯誤?

Java 匿名內部類別如何優化效能? Java 匿名內部類別如何優化效能? May 02, 2024 am 08:48 AM

Java 匿名內部類別如何優化效能?

Java 匿名內部類別的替代方案是什麼? Java 匿名內部類別的替代方案是什麼? Apr 30, 2024 pm 01:15 PM

Java 匿名內部類別的替代方案是什麼?

Java 匿名內部類別在哪些場景下不適合使用? Java 匿名內部類別在哪些場景下不適合使用? May 03, 2024 pm 05:42 PM

Java 匿名內部類別在哪些場景下不適合使用?

See all articles