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();
我对代码有点困惑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();