黑马程序员技术交流社区

标题: 一个简单的代码,,,请问错在哪里了 [打印本页]

作者: awkflf11    时间: 2014-3-26 12:01
标题: 一个简单的代码,,,请问错在哪里了

        void method2()
        {
                new Object(
                {
                        void show2(){}
                }.show2();

                Object obj = new Object(
                {
                       
                        void show2(){System.out.println("show2 run");}
                        void show3(){System.out.println("show3 run");}
                };

        obj.show2()
        }
}

一个简单的代码,,,请问错在哪里了、、、看了好久,,没有看出来,,,

谢谢了



作者: 南湘雨梦    时间: 2014-3-26 12:06
本帖最后由 南湘雨梦 于 2014-3-26 12:15 编辑

  1. Object obj = new Object(
  2.                 {
  3.                        
  4.                         void show2(){System.out.println("show2 run");}
  5.                         void show3(){System.out.println("show3 run");}
  6.                 };

  7.         obj.show2()
复制代码

Object里面没有show2方法

作者: 李东梁    时间: 2014-3-26 12:10
本帖最后由 李东梁 于 2014-3-26 12:12 编辑

这是一个匿名内部类问题:
  1. void method2()
  2.         {
  3.                 new Object(
  4.                 {
  5.                         void show2(){}
  6.                 }.show2();

  7.                 Object obj = new Object(
  8.                 {
  9.                        
  10.                         void show2(){System.out.println("show2 run");}
  11.                         void show3(){System.out.println("show3 run");}
  12.                 };

  13.         obj.show2()//错在了这里。
  14.         }
  15. }
复制代码

错在我注释的地方,匿名内部类被提升,Object没有show2方法,所以报错!

作者: awkflf11    时间: 2014-3-26 12:11
南湘雨梦 发表于 2014-3-26 12:06
013456456假道伐虢

这是   什么嘛情况  从农村     不放方便
作者: 491138002    时间: 2014-3-26 16:35
Object没有show2方法
作者: ╰青青子佩ˊゝ    时间: 2014-3-26 22:45
正确的应该这样写:
作者: ╰青青子佩ˊゝ    时间: 2014-3-26 22:46
正确的应该这样写:
method2()
{
            new Object()
            {                 
                 public void show2(){System.out.println("show2 run");}
                 public void show3(){System.out.println("show3 run");}
            }.show2();
    }
作者: shi0000    时间: 2014-3-26 22:59
void method2()         {                 new Object(                 {                         void show2(){}                 }.show2(); //没有方法体不会运行                  Object obj = new Object(                 {                                                  void show2(){System.out.println("show2 run");}                         void show3(){System.out.println("show3 run");}                 };          obj.show2()         } }
作者: shi0000    时间: 2014-3-27 23:01
void method2()        
{                 new Object(                 {                        
void show2(){}                 }.show2(); //没有方法体不会运行               
Object obj = new Object(                 {                                                  
void show2(){
System.out.println("show2 run");}                        
void show3(){
System.out.println("show3 run");}               
};        
obj.show2()         } }




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