【转】匿名内部类在多线程Callable中的使用小结
来源:互联网 发布:mit 算法导论 pdf 编辑:程序博客网 时间:2024/06/05 19:31
匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下:
[java] view plaincopyprint?
new
父类构造器(参数列表)|实现接口()
{
//匿名内部类的类体部分
}
在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有
class
关键字,这是因为匿名内部类是直接使用
new
来生成一个对象的引用。当然这个引用是隐式的。
[java] view plaincopyprint?
public
abstract
class
Bird {
private
String name;
public
String getName() {
return
name;
}
public
void
setName(String name) {
this
.name = name;
}
public
abstract
int
fly();
}
public
class
Test {
public
void
test(Bird bird){
System.out.println(bird.getName() +
"能够飞 "
+ bird.fly() +
"米"
);
}
public
static
void
main(String[] args) {
Test test =
new
Test();
test.test(
new
Bird() {
public
int
fly() {
return
10000
;
}
public
String getName() {
return
"大雁"
;
}
});
}
}
------------------
Output:
大雁能够飞
10000
米
在Test类中,test()方法接受一个Bird类型的参数,同时我们知道一个抽象类是没有办法直接
new
的,我们必须要先有实现类才能
new
出来它的实现类实例。所以在mian方法中直接使用匿名内部类来创建一个Bird实例。
由于匿名内部类不能是抽象类,所以它必须要实现它的抽象父类或者接口里面所有的抽象方法。
对于这段匿名内部类代码其实是可以拆分为如下形式:
[java] view plaincopyprint?
public
class
WildGoose
extends
Bird{
public
int
fly() {
return
10000
;
}
public
String getName() {
return
"大雁"
;
}
}
WildGoose wildGoose =
new
WildGoose();
test.test(wildGoose);
在这里系统会创建一个继承自Bird类的匿名类的对象,该对象转型为对Bird类型的引用。
对于匿名内部类的使用它是存在一个缺陷的,就是它仅能被使用一次,创建匿名内部类时它会立即创建一个该类的实例,该类的定义会立即消失,所以匿名内部类是不能够被重复使用。对于上面的实例,如果我们需要对test()方法里面内部类进行多次使用,建议重新定义类,而不是使用匿名内部类。
0 0
- 【转】匿名内部类在多线程Callable中的使用小结
- java 匿名内部类 lambda 在多线程中的使用例子
- 匿名内部类在多线程中的应用
- 匿名内部类小结
- 2、匿名内部类在开发中的使用
- 匿名内部类的多线程使用
- 通过匿名内部类方式使用多线程
- java在方法中的匿名内部类
- java中的内部类和匿名内部类的使用
- java 多线程 匿名内部类
- JAVA中的内部类--匿名内部类
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- (转)匿名内部类
- 内部类、匿名内部类的使用
- maven引入本地包
- window.location.search.substring(1); 什么意思
- 二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
- ios NSDictionary
- JavaScript使用原型实现继承时应注意的问题
- 【转】匿名内部类在多线程Callable中的使用小结
- 杭电1033
- linux使用crontab实现php定时任务
- RabbitMQ(一) Win7系统下的安装与配置
- php 程序中开启报错
- 线程同步(互斥锁与信号量的作用与区别)
- AudioManager获得焦点音频的问题
- linux查找命令大全
- Android 底部Tab向右偏移兼容问题解决