Java:使用和不创建Object的接口实例化

时间:2017-02-14 05:11:25

标签: java eclipse oop interface inner-classes

我在下面的代码中有点混乱。在第一个代码和接口实例化并创建了对象i:

Inter i=new Inter() {

            @Override
            public void work() {                                      //CODE:1
                System.out.println("work work work work work work");

            }
        }.work() ; //this won't worrk gives error:can't covert void to Inter

但是如果我在不创建对象的情况下实例化它一切正常:

 new Inter() {   //no object created 

            @Override
            public void work() {                                    //CODE:2
                System.out.println("CODE2: work work work work");

            }
        }.work();                 //this is printing in the console

有人可以告诉我是什么原因?如果创建了对象i,为什么代码不起作用?

1 个答案:

答案 0 :(得分:1)

上面的实现没有工作,因为如果你看起来关闭了错误。 错误是Type mismatch: cannot convert from void to Inter 您在最后调用方法work(),因此它被视为方法调用,而您的work()具有返回类型void,因此它会抛出异常。删除work()的链式调用它适用于您。

Inter i=new Inter() {

            @Override
            public void work() {                                      //CODE:1
                System.out.println("work work work work work work");

            }
        }.work() ; //this won't worrk gives error:can't covert void to Inter

如果您将上述代码更改为低于1,那么它将起作用。

Inter i=new Inter() {

                @Override
                public void work() {                                      //CODE:1
                    System.out.println("work work work work work work");

                }
            };
i.work();