JAVA匿名内部类的学习
来源:互联网 发布:手机淘宝申请退款 编辑:程序博客网 时间:2024/06/06 03:16
网上找了很多资料,学习了一下内部类,其实也不常用,具体也没有怎么使用过,还是学习下了。
一般用在 事件处理、线程比较多
注意匿名类的声明是在编译时进行的,实例化在运行时进行。这意味着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;}}
暂时写到这里,以后再补。
- JAVA匿名内部类的学习
- Java学习--匿名内部类
- java 匿名内部类学习
- Java匿名内部类学习
- java的内部类、匿名内部类、局部内部类
- Java的匿名内部类
- java的匿名内部类
- java的匿名内部类
- java的匿名内部类
- java的匿名内部类
- Java的匿名内部类
- java的匿名内部类
- java的匿名内部类
- Java的匿名内部类
- java学习之路----内部类之---匿名内部类
- Java内部类以及匿名内部类学习总结
- 匿名内部类学习笔记InnerClassDemo4.java
- 匿名内部类学习笔记InnerClassTest.java
- MfgTool 烧写内存为256M的板
- App 热潮,谁的机会?——图解九种APP商业模式
- 在.net中未能用trycatch捕获到的异常处理
- kernel 异常处理
- 无线索的崩溃
- JAVA匿名内部类的学习
- Extjs用ajax提交表单四种方式
- Windows下利用MinGW编译FFmpeg
- Xcode4.6+SVN构建SVN项目管理(四) xcode自带svn的使用
- 第一次作业(读后感)
- 海量数据的二度人脉挖掘算法(Hadoop 实现)
- C++学习笔记11——复制控制
- 程序员度量:改善软件团队的分析学
- java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar 解决