JAVA匿名內部類的學習

來源:互聯網
上載者:User

網上找了很多資料,學習了一下內部類,其實也不常用,具體也沒有怎麼使用過,還是學習下了。

一般用在 事件處理、線程比較多

注意匿名類的聲明是在編譯時間進行的,執行個體化在運行時進行。這意味著for迴圈中的一個new語句會建立相同匿名類的幾個執行個體,而不是建立幾個不同匿名類的一個執行個體。

在使用匿名內部類時,要記住以下幾個原則:

匿名內部類不能有構造方法。  

匿名內部類不能定義任何靜態成員、方法和類。  

匿名內部類不能是public,protected,private,static。  

只能建立匿名內部類的一個執行個體。

一個匿名內部類一定是在new的後面,用其隱含實現一個介面或實現一個類。  

因匿名內部類為局部內部類,所以局部內部類的所有限制都對其生效。

內部類只能訪問外部類的靜態變數或靜態方法。

貼上點代碼,一個介面,三個類,不同的傳回值方法:

package com.other;public interface AInterface {public Object doInner();}

package com.other;public class InnerClass {public static void main(String[] args) {InnerClass ic = new InnerClass();AInterface result = ic.getInnerClass();System.out.println(result.doInner());}private AInterface getInnerClass(){return new AInterface(){public String doInner(){return "hello";}};}}

package com.other;public class InnerClassA {public static void main(String[] args) {InnerClassA ia = new InnerClassA();boolean flag = ia.getTrueOrFalse();System.out.println(flag);}private boolean getTrueOrFalse(){boolean flag = false;Object obj = new InnerClassA().excuteTF(new AInterface(){public Object doInner(){return "hello";}});flag = (Boolean)obj;return flag;}private Object excuteTF(Object obj){AInterface ic = (AInterface)obj;String temp = (String)ic.doInner();if(temp.equals("hello")){return true;}else{return false;}}}

package com.other;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class InnerClassB {public static void main(String[] args) {InnerClassB ia = new InnerClassB();List<Map<String,Object>> list = ia.getList();for (int i = 0; i < list.size(); i++) {Map<String, Object> map = (Map<String, Object>)list.get(i);System.out.println("城市區號:" + map.get("IDNO") + "--城市名稱:" + map.get("DESC"));}}private List<Map<String,Object>> getList(){return new InnerClassB().excuteList(new AInterface(){public Object doInner(){List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();Map<String, Object> map1 = new HashMap<String, Object>();map1.put("IDNO", "010");map1.put("DESC", "北京");Map<String, Object> map2 = new HashMap<String, Object>();map2.put("IDNO", "021");map2.put("DESC", "上海");Map<String, Object> map3 = new HashMap<String, Object>();map3.put("IDNO", "022");map3.put("DESC", "天津");Map<String, Object> map4 = new HashMap<String, Object>();map4.put("IDNO", "023");map4.put("DESC", "重慶");list.add(map1);list.add(map2);list.add(map3);list.add(map4);return list;}});}@SuppressWarnings("unchecked")private List<Map<String,Object>> excuteList(Object obj){AInterface ic = (AInterface)obj;List<Map<String,Object>> list = (List<Map<String, Object>>)ic.doInner();return list;}}

暫時寫到這裡,以後再補。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.