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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不抛弃不放弃 中级黑马   /  2013-11-14 11:45  /  985 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不抛弃不放弃 于 2013-11-14 12:34 编辑

infterface Inter{
  public void method();
}

class Test{
      //推出这里面的匿名内部类的   代码

}

class InnerClassTest{

    public static void main(String []args){
             Test.function().method();//给定这个  推出匿名内部类
   }
}
// 尽量详细讲解 谢谢

评分

参与人数 1技术分 +1 收起 理由
To + 1 考虑你即将分配名额

查看全部评分

2 个回复

倒序浏览
Test.function().method();//给定这个  推出匿名内部类
看上面这句话,可以先将它肢解下  Test.function();这句通过类名直接访问内部的方法说明function是静态的且是public的,所以类Test应该是下面格式的
class Test{
   public  static ?(返回值目前不确定) function(){
    }
}
在后面加上.method();说明Test.function();返回的是一个对象这个对象中有一个public的method()方法,所以这里返回的是一个实现了Inner接口的类的实例对象(我们知道匿名内部类时这个类必须继承一个类或实现一个接口,那我们这边能不能继承一个累呢?不行因为这边没有声明一个包含method的方法,换句话说只能继承Object,但是Object中没有method方法,这就导致外部无法调用该类的method方法,所以只能实现Inner接口),所以代码如下
class Test{
    public static Inner/*这是就确定了类型*/function(){
        return new Inner(){
            
          public void method(){system.out.println("in method")/*代码*/}
             };
   }
}


评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报

  1. interface Inter{
  2.           public void method();
  3.         }

  4. class Test{

  5.         public static Inter function() {
  6.                
  7.                 return new Inter() {
  8.                         
  9.                         @Override
  10.                         public void method() {
  11.                                 
  12.                                 
  13.                         }
  14.                 };
  15.         }

  16. }

  17. /*
  18. * 1)从Test.function()可以看出Test里面有个function方法,而且是静态的(不是静态的需要new一个对象再调用)
  19. * 2)从Test.function().method()的第二个点可以看出Test.function()返回的是一个对象,而且这个对象里面有个method方法
  20. * 3)在从Inter接口可以看出这个类还实现了Inter接口,然后结果就出来了
  21. */
  22. class InnerClassTest{

  23.     public static void main(String []args){
  24.              Test.function().method();//给定这个  推出匿名内部类
  25.    }
  26. }
复制代码
1)从Test.function()可以看出Test里面有个function方法,而且是静态的(不是静态的需要new一个对象再调用)
2)从Test.function().method()的第二个点可以看出Test.function()返回的是一个对象,而且这个对象里面有个method方法
3)在从Inter接口可以看出这个类还实现了Inter接口,然后结果就出来了


评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马