Java:Interface 创建和不创建对象的实例化

Java:Interface instantiation with and without creating Object

我对代码有点困惑below.in 第一个代码和接口被实例化并创建了对象 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,为什么代码无法运行?

上面的实现没有工作,因为如果你看起来关闭了错误。 错误是 Type mismatch: cannot convert from void to Inter 您在最后调用方法 work(),因此它被视为方法调用,而您的 work() 具有 return 类型 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

如果您将上面的代码更改为以下代码,那么它将起作用。

Inter i=new Inter() {

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

                }
            };
i.work();