A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王雷1 中级黑马   /  2013-11-27 11:51  /  2384 人查看  /  20 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能给我写一个完整的在成员上而不是在局部的匿名内部类,还是匿名内部类就不能在成员的位置上只能在局部,我怎么写不出来,写出来eclipse就报错

评分

参与人数 1黑马币 +5 收起 理由
枫儿 + 5 神马都是浮云

查看全部评分

20 个回复

倒序浏览
Inteface A{
              void method();
}

public class B{
            private  string  xxx;
            new A(){
                  publi void method(){
                           System.out.println("这是成员位置上的匿名内部类");
                  }
            }
}

希望对你有帮助!{:soso_e141:}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
王松松 发表于 2013-11-27 12:07
Inteface A{
              void method();
}


先谢谢,
回复 使用道具 举报
王松松 发表于 2013-11-27 12:07
Inteface A{
              void method();
}

我修复了一下,是这样的,
interface A{
              void method();
}
public class B{
       
        {
      new A(){
         public void method(){
             System.out.println("这是成员位置上的匿名内部类");
         }
      }.method();
        }
}
但是这样不是成构造代码块了么?要不就不行错误
回复 使用道具 举报
王松松 发表于 2013-11-27 12:07
Inteface A{
              void method();
}

如果这样写了,new A()里面的method()方法咋么调用?
回复 使用道具 举报
陪你等日出 发表于 2013-11-27 13:16
如果这样写了,new A()里面的method()方法咋么调用?
  1. interface Jc
  2. {
  3.         void run();
  4. }

  5. class Outer
  6. {
  7.         Jc j = new Jc()
  8.         {
  9.                 public void run()
  10.                 {
  11.                         System.out.println("inner");
  12.                 }
  13.         };

  14. }

  15. class NBN
  16. {
  17.         public static void main(String[] args)
  18.         {
  19.                 Outer out = new Outer();
  20.                 Jc in = out.j;
  21.                 in.run();

  22.                
  23.         }
  24. }
复制代码
回复 使用道具 举报 1 0
王雷1 发表于 2013-11-27 13:13
我修复了一下,是这样的,
interface A{
              void method();

你加{    }干嘛?
回复 使用道具 举报
王雷1 中级黑马 2013-11-27 13:33:14
8#
王松松 发表于 2013-11-27 13:32
你加{    }干嘛?

不加报错
回复 使用道具 举报

。。前面加个引用A a 试试。
回复 使用道具 举报
回复 使用道具 举报
王松松 发表于 2013-11-27 13:36
。。前面加个引用A a 试试。

大哥,你敢不敢给我写个完整的,这个问题我都纠结2天了,解决不了,想不想做大善人了你?想就给我写一个
回复 使用道具 举报
王雷1 发表于 2013-11-27 13:43
大哥,你敢不敢给我写个完整的,这个问题我都纠结2天了,解决不了,想不想做大善人了你?想就给我写一个 ...

加了个借口类型的引用接受匿名内部类,差不多完整了吧?
  1. interface Jc

  2. {

  3.         void run();

  4. }



  5. class Outer

  6. {

  7.         Jc j = new Jc()

  8.         {

  9.                 public void run()

  10.                 {

  11.                         System.out.println("inner");

  12.                 }

  13.         };



  14. }
复制代码
回复 使用道具 举报
王松松 发表于 2013-11-27 13:50
加了个借口类型的引用接受匿名内部类,差不多完整了吧?

你加了引用就不是匿名了,是吧
回复 使用道具 举报
王雷1 发表于 2013-11-27 13:53
你加了引用就不是匿名了,是吧

是匿名好吧。不然你自己编译看看生成的class文件,有一个Outer$1.class
回复 使用道具 举报
本帖最后由 王雷1 于 2013-11-27 14:09 编辑
王松松 发表于 2013-11-27 14:04
是匿名好吧。不然你自己编译看看生成的class文件,有一个Outer$1.class


也就是说成员上的匿名内部类都要有引用? 那匿名还有什么意义?直接定义内部类不就完了么?比如线程的匿名内部类,如果在成员上我怎么开启strat方法?要引用。start();?
回复 使用道具 举报
王雷1 发表于 2013-11-27 14:05
也就是说成员上的匿名内部类都要有引用? 那匿名还有什么意义?直接定义内部类不就完了么?比如线程的匿 ...

匿名内部类一般需要有继承或者实现关系,适用于含有较少方法时。
至于他的应用和意义,我也说不上许多,可以作为某种参数传递等等。
如果不使用匿名内部类,那么就需要重新定义一个 .java文件体现继承或者实现关系。
回复 使用道具 举报
王雷1 发表于 2013-11-27 14:05
也就是说成员上的匿名内部类都要有引用? 那匿名还有什么意义?直接定义内部类不就完了么?比如线程的匿 ...

匿名内部类一般需要有继承或者实现关系,适用于含有较少方法时。
至于他的应用和意义,我也说不上许多,可以作为某种参数传递等等。
如果不使用匿名内部类,那么就需要重新定义一个 .java文件体现继承或者实现关系。
回复 使用道具 举报
王松松 发表于 2013-11-27 14:25
匿名内部类一般需要有继承或者实现关系,适用于含有较少方法时。
至于他的应用和意义,我也说不上许多, ...

非常感谢,但是能不能请你帮我写一个开启线程的在成员位置上的匿名内部类
回复 使用道具 举报
王雷1 发表于 2013-11-27 14:27
非常感谢,但是能不能请你帮我写一个开启线程的在成员位置上的匿名内部类 ...
  1. public class  NbnThreadTest{
  2.         public static void main(String[] args){
  3.                
  4.                 new Thread(new Outer().r).start();
  5.         }
  6. }

  7. class Outer
  8. {
  9.         Runnable r = new Runnable()
  10.         {
  11.                 public void run(){
  12.                         System.out.println("run........");
  13.                 }
  14.         };
  15. }


复制代码
回复 使用道具 举报

如果我在一个类中,要实现主线程和开启的线程同时访问一个循环体,那就要引用名。strat,而有了引用的话不就没有起到匿名内部类的作用了么?因为没有直接开启。不管怎么说还是谢谢,可能是我太专牛角尖了,呵呵,我要下了,有机会在聊下
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马