Android Studio——private Handler mHandler = new Handler() {...}此处使用的什么语法,继承?重写?匿名类?
2016-01-07 22:56
555 查看
Class A { .......... ............ private Handler mHandler = new Handler() { //此处使用的什么语法啊 , 继承?重写?匿名类? public void handleMessage(Message msg) { switch (msg.what) { case 1: // 所做的操作 break; case 2: // 所做的操作 break; default: // 所做的操作 } }; } ..... ....... } ********************************************************************************************************************************************************************************** private Handler mHandler = new Handler() { public void handleMessage(Message msg) {.....} } 其中使用的正是内部类 ·匿名内部类不能有构造方法。 ·匿名内部类不能定义任何静态成员、静态方法。 ·匿名内部类不能是public,protected,private,static。 ·只能创建匿名内部类的一个实例。 ·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。 ·因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。 A、继承式的匿名内部类 public class Car { public void drive(){ System.out.println("Driving a car!"); } public static void main(String[] args) { Car car = new Car(){ public void drive() { System.out.println("Driving another car!"); } }; car.drive(); } } 结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。 B、接口式的匿名内部类。 interface Vehicle { public void drive(); } class Test{ public static void main(String[] args) { Vehicle v = new Vehicle(){ public void drive(){ System.out.println("Driving a car!"); } }; v.drive(); } } 上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。 C、参数式的匿名内部类。 class Bar{ void doStuff(Foo f){ f.foo(); } } interface Foo{ void foo(); } class Test{ static void go(){ Bar b = new Bar(); b.doStuff(new Foo(){ public void foo(){ System.out.println("foofy"); } }); } }
相关文章推荐
- android基础回顾笔记1--四大组件
- android设置圆角矩形
- Android Support library
- Android通过AIDL与远程服务通信
- Android View(一)-View坐标以及方法说明
- Android数据存储---SharedPreferences详解及应用
- Android SQLite学习指南
- Android之菜单总结
- Android自助餐之Jni(四)在线导入so文件
- Android自定义控件实现圆形进度CircleProgressBar
- Android中BroadcastReceiver
- 写出高效清晰Layout布局文件的一些技巧
- Android性能优化之如何避免Overdraw
- Android自助餐之Jni(三)动态导入so文件
- Android安卓开发环境安装
- Android自助餐之Jni(二)静态导入so文件
- Android 线程
- 【Android View】Android中View对触摸事件的处理和传递dispatchTouchEvent、onInterceptTouchEvent
- [Android 解决 “'default' is not a best match for any device/locale ]
- Android Listener侦听的N种写法