黑马程序员技术交流社区
标题:
匿名内部类的问题?
[打印本页]
作者:
蒙武辉
时间:
2012-2-17 17:19
标题:
匿名内部类的问题?
什么是匿名内部类?我的理解没有名字的类带实现功能的对象。不知道对不对?
我看见视频上说,有一个接口comparator把它写成匿名内部类是这样?
TreeSet ts=new TreeSet(new comparator(){
程序代码
});
疑问:接口直接可以new吗?不用实现了吗?
作者:
丁晓宇
时间:
2012-2-17 17:38
意思是你在new TreeSet的时候 传了一个 (实现了comparator接口的没有名字的内部类的对象)作为参数
作者:
刘基军
时间:
2012-2-17 18:25
什么是匿名内部类?我的理解没有名字的类带实现功能的对象(
实现了当前类的子类的一个对象
)。不知道对不对?
我看见视频上说,有一个接口comparator把它写成匿名内部类是这样?
TreeSet ts=new TreeSet(new comparator(){
程序代码
});
疑问:接口直接可以new吗?不用实现了吗?
(这边并不是new的Comparator接口,而new的是其子类)
作者:
唐溪永
时间:
2012-2-19 22:30
首先要搞清楚局部内部类 (出现在局部变量那个位置上的类,叫做局部内部类),而将局部内部类的使用再深入一步,即是匿名内部类(假如只创建这个类的一个对象,就不必命名了的意思)
例public class Test{
public static void main(String[] args){
/*
B b = new B();
b.mm(new AImpl());
*/
B b = new B();
b.mm(new A(){
public void m(){
System.out.println("m method invoked!...........");
}
});
}
}
interface A{
void m();
}
/*
class AImpl implements A{
public void m(){
System.out.println("m method invoked!");
}
}
*/
class B{
public void mm(A a){
a.m();
}
}
作者:
陈伟
时间:
2012-2-19 22:45
内部类就是在一个类中嵌套了一个类,内部类中通常实现一些方法,匿名内部类一般android中用的很多,那么举例比如说类A实现了Runnable这个接口,应该知道实现这个接口执行里面run方法就是多线程。通常也许我们会
class A implements Runnable{
public void run(){执行多线程}
}
这种情况我也可以这么写
Runnable A=new Runnable(){
public void run(){执行多线程}
};(这里有分号)
我们知道接口是不能new的 , 那上面这种情况就是说在new一个接口的形式,但是这样写可别理解为在创建对象A,这里A可是一个类,只是没有通过最上面的写法,而是直接这样写得,那个run方法就是A类实现Runnable接口的重写方法,那么匿名内部类就是说把A去掉,让他没名字的类,比如
new Runnable(){
public void run(){执行多线程}
};(这里有分号)
这样也是一个类,只是不知道名字,好比new A();创建对象没有引用一样,我们可以说匿名引用。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2