我们可以在Java中创build一个接口的实例吗?

有没有可能在Java中创build一个接口的实例?

我已经读过使用内部匿名类的地方,我们可以这样做,如下所示:

interface Test { public void wish(); } class Main { public static void main(String[] args) { Test t=new Test() { public void wish() { System.out.println("output: hello how ru"); } }; t.wish(); } } cmd> javac Main.java cmd> java Main output: hello how ru 

这里正确吗?

是的,你的例子是正确的。 匿名类可以实现接口,这是我唯一能想到的,你会看到一个实现一个接口,没有“实现”关键字的类。 在这里查看另一个代码示例:

 interface ProgrammerInterview { public void read(); } class Website { ProgrammerInterview p = new ProgrammerInterview () { public void read() { System.out.println("interface ProgrammerInterview class implementer"); } }; } 

这工作正常。 被采取从这页:

http://www.programmerinterview.com/index.php/java-questions/anonymous-class-interface/

你永远不能在java中实例化一个接口。 但是,您可以引用通过接口types实现接口的对象。 例如,

 public interface A { } public class B implements A { } public static void main(String[] args) { A test = new B(); //A test = new A(); // wont compile } 

你在上面做的是创build一个实现接口的匿名类。 您正在创build一个Anonymous对象,而不是types为interface Test的对象。

通常,您可以创build一个接口的参考。 但是你不能创build一个接口的实例。

简短的回答…是的。 初始化variables时,可以使用匿名类。 看看这个

不,在我看来,你可以创build一个接口的引用variables,但不能像抽象类一样创build一个接口的实例。

是的,这是正确的。 你可以做一个内部类。

是的,我们可以这样做,“匿名类使您能够使代码更加简洁,它们使您能够同时声明和实例化一个类,它们就像本地类一样,只是它们没有名字” – >> Java Doc