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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© vaqh 中级黑马   /  2014-7-28 19:44  /  2196 人查看  /  27 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 vaqh 于 2014-7-29 23:03 编辑

class InnerTest
{
        public static void main(String[] args)
        {
                Object o = new Object()
                {
                        function(){}
                };
                o.function();
        }
}
以上代码的运行结果是什么?为什么呢?

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1

查看全部评分

27 个回复

倒序浏览
貌似编译就过不了吧!!!
回复 使用道具 举报
怀念黑海岸 发表于 2014-7-28 19:51
貌似编译就过不了吧!!!

为什么呢
回复 使用道具 举报
你应该是想调用InnerTest类中的内部类。这个内部类中有一个函数叫function();
你是想调用这个function()方法
可以这样子写:
class Test{       
        public static void main(String[] args)
        {
               new Object()
                {
                        void function(){
                                System.out.println("hello");
                                }
                }.function();
        }
}

评分

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

查看全部评分

回复 使用道具 举报
    使用匿名内部类的原因是为了简化书写方便,而且内部类中的方法不要太多,太多的话你又要重新定义对象去调用,那他就失去了匿名函数的简化行,
new Object() {
                        void function(){
                                System.out.println("hello");
                                }
                }
这段语句其实运行的结果就是产生了一个匿名内部类,这个语句块后面的 .funciton()就是调用内部类中的方法。
回复 使用道具 举报

首先,你的function函数没有对定义返回值,其次,你定义的object类对象中没有function方法,调用不成功。
你定义的Object o=new Object()对象引用没有指向这个匿名内部类,肯定报错了。
回复 使用道具 举报 1 0
vaqh 中级黑马 2014-7-28 22:01:46
7#
怀念黑海岸 发表于 2014-7-28 19:57
你应该是想调用InnerTest类中的内部类。这个内部类中有一个函数叫function();
你是想调用这个function( ...

恩,谢谢
回复 使用道具 举报
席杰 中级黑马 2014-7-28 23:17:15
8#
学习一下!
回复 使用道具 举报
vaqh 中级黑马 2014-7-28 23:23:39
9#
谢谢大家了
回复 使用道具 举报
编译不能通过 前提Object要有function()方法
回复 使用道具 举报
好厉害的样子!!
回复 使用道具 举报
huangxuanheng 来自手机 中级黑马 2014-7-29 00:10:18
12#
那不用.function()调用,会执行function吗?
回复 使用道具 举报
vaqh 中级黑马 2014-7-29 08:32:47
13#
huangxuanheng 发表于 2014-7-29 00:10
那不用.function()调用,会执行function吗?

肯定不会啊
回复 使用道具 举报
{:3_53:}很有意思的样子
回复 使用道具 举报
你定义的方法是一个抽象方法!  不可能有运行结果!
回复 使用道具 举报
vaqh 中级黑马 2014-7-29 14:31:46
16#
柳超 发表于 2014-7-29 09:35
你定义的方法是一个抽象方法!  不可能有运行结果!

抽象方法???不是吧
回复 使用道具 举报
怀念黑海岸 发表于 2014-7-28 19:51
貌似编译就过不了吧!!!

应该编译会通过的,因为没有语法错误
回复 使用道具 举报
编译失败,Object类中没有定义fuction方法,匿名内部类格式  new  父类或接口名(){复写父类或接口中的方法定义子类的内容};
回复 使用道具 举报
学习一下!
回复 使用道具 举报
vaqh 发表于 2014-7-29 14:31
抽象方法???不是吧

抽象方法:在类中没有方法体的方法,就是抽象方法
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马