黑马程序员技术交流社区

标题: 有个知识点把我弄糊涂了,请帮我解决一下!!! [打印本页]

作者: 唐侠君    时间: 2013-12-13 15:50
标题: 有个知识点把我弄糊涂了,请帮我解决一下!!!
本帖最后由 唐侠君 于 2013-12-14 18:37 编辑

了解了匿名对象的使用(new 类名()),那么有匿名函数,匿名类吗,在哪里使用?请举一下简单的例子。百度里的回答很表面,看了也理解的不是很透彻。
作者: 路国强    时间: 2013-12-13 16:07
我也不懂,求解.......
作者: 胡永城    时间: 2013-12-13 16:12
本帖最后由 胡永城 于 2013-12-13 16:28 编辑

匿名对象也会创建一个对象实体,可以作为参数使用,函数需要函数名才可以调用,匿名类也需要类名才可以使用或者实例化,匿名函数和匿名类没有意义,所以不需要。当使用匿名类时,是把匿名类直接实例化来使用的,比如说一个函数的参数是接口类型的,在为其传递参数时,如果这个参数只使用一次(同匿名对象用法),可以new一个对象实现接口的方法。常用于监听器中。
代码示例如下:
  1. import org.junit.Test;
  2. public class DemoTest{
  3.         @Test
  4.         public void test(){
  5.                 run(new InDemo() {//此处使用了匿名类,实现接口InDemo。
  6.                         @Override
  7.                         public void onClick() {//实现接口中的方法
  8.                                 System.out.println("点击事件");
  9.                         }
  10.                 });
  11.         }
  12.         public void run(InDemo in){//定义一个函数,参数为InDemo类型
  13.                 in.onClick();//调用接口中的方法
  14.         }
  15. }
  16. interface InDemo{//接口
  17.         void onClick();
  18. }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2