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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

探寻者

中级黑马

  • 黑马币:34

  • 帖子:118

  • 精华:0

interface Inter
{
        void method();
}
class Test1
{
        static  Inter function()
        {
                return new Inter()
                {
                        public void method()
                        {
                                System.out.println("method run.");
                        }
                };
        }
}
从return new Inter()开始,感觉好像就不对了。。。

7 个回复

倒序浏览
如果写成这样:
回复 使用道具 举报
今天又看了视频,如果写成这样,就容易理解了:
interface Inter
{
        void method();
}
class Test1
{
         class inner implements Inter
        {
                public void method()
                {
                        System.out.println("method run.");
                }
        }
}

主函数中用内部类调用:
Test1.inner ti=new Test1().new inner();
                ti.method();
回复 使用道具 举报
感觉的话,你这么写是可以的,不过好像有点不想匿名内部类了。
你看看这么写如何:
public interface ITest {//定义接口
    void method();//接口方法
}

public class Test2 {

    public static void main(String[] args) {
        //new接口
        new ITest() {
            //紧跟着实现接口的方法
            @Override
            public void method() {
                System.out.println("ddddddddd");
            }
        }.method();//用new的对象再调用匿名对象所实现的方法
    }
}

其实在 多线程这里也使用匿名内部类了
new Thread(new Runnable(){
@Override
public void run(){
   System.out.println("ddd")
}
}).start();

至少我是这么理解的,匿名,也就是没有名称,也就是new的对象是没有名称的,new对象后跟{},{}里面是方法的具体实现,然后用new的对象再紧跟着调用所实现的方法。应该就是这么个流程吧。
你认为这么理解如何。。
回复 使用道具 举报
duluhua 发表于 2014-12-19 14:18
感觉的话,你这么写是可以的,不过好像有点不想匿名内部类了。
你看看这么写如何:
public interface ITest ...

嗯,我那样写是有类名的内部类了,感觉匿名内部类好难理解,所以就用有名字的了。。
回复 使用道具 举报
现在理解了么
回复 使用道具 举报

至少有概念了,你代码解释很详细,后面写的自己的理解也透彻,谢谢学习了
回复 使用道具 举报
匿名一般就是用在只用一次的情景,没必要创建引用的时候使用。或者工具类的使用的时候可以用匿名类。

属于一种避免浪费内存和减少操作的技巧。这是我的理解。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马