我们可以用Java创建接口的实例吗?

我们可以用Java创建接口的实例吗?,java,interface,instance,inner-classes,anonymous-class,Java,Interface,Instance,Inner Classes,Anonymous Class,可以用Java创建接口的实例吗 我在某个地方读到,使用内部匿名类,我们可以做到如下所示: 接口测试{ 公共愿望(); } 班长{ 公共静态void main(字符串[]args){ 测试t=新测试(){ 公众愿望(){ System.out.println(“输出:hello how r u”); } }; t、 愿望(); } } cmd>javac Main.java cmd>javamain 输出:你好 这里正确吗?简短的回答……是的。初始化变量时,可以使用匿名类。 看看这个问题:您永

可以用Java创建接口的实例吗

我在某个地方读到,使用内部匿名类,我们可以做到如下所示:

接口测试{
公共愿望();
}
班长{
公共静态void main(字符串[]args){
测试t=新测试(){
公众愿望(){
System.out.println(“输出:hello how r u”);
}
};
t、 愿望();
}
}
cmd>javac Main.java
cmd>javamain
输出:你好

这里正确吗?

简短的回答……是的。初始化变量时,可以使用匿名类。
看看这个问题:

您永远不能用java实例化接口。但是,您可以根据接口的类型引用实现接口的对象。比如说,

public interface A
{
}
public class B implements A
{
}

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

上面所做的是创建一个实现接口的匿名类。您正在创建一个匿名对象,而不是
接口测试类型的对象

是的,这是正确的。您可以使用内部类来完成此操作。

通常,您可以为接口创建引用。但您不能为接口创建实例。

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

接口程序Interview{
公共无效读取();
}
班级网站{
ProgrammerInterview p=新的ProgrammerInterview(){
公共无效读取(){
System.out.println(“接口程序Interview类实现者”);
}
};
}
这个很好用。摘自本页:


是的,我们可以,“匿名类使您的代码更加简洁。它们使您能够同时声明和实例化一个类。它们与本地类类似,只是它们没有名称”-

我认为不,您可以创建接口的引用变量,但不能像创建抽象类那样创建接口的实例。

匿名类没有名称。…匿名他问他的示例是否正确,事实确实如此。不确定你是否承认……这个例子是有效的……但不像他认为的那样。理解代码真正在做什么很重要。如果代码与他认为的不一样,我不会称之为“正确”。@JJnguy,所有类都有名称。对于匿名类,它由编译器生成。可以在匿名类中执行getClass().getName()并获取其名称。您可以使用此名称通过反射来访问它。如果您查看上述注释之一,您将看到语法需要
接口名称
,以便编译器知道匿名对象实现了接口。这只是语言语法的一部分。我会说不。。。因为anonymous实现了接口。。。但是您没有implements关键字根据我的知识,这个编译没有错误吗?接口不能被实例化,但是在您的回答中,它是通过行
programmeriinterview p=newprogrammeriinterview(){
在上面的示例中,我们没有实例化ProgrammerInterview的对象,但我们所做的是使用ProgrammerInterview创建引用,然后创建一个匿名类的对象。这个匿名类一次性实现了ProgrammerInterview并创建了匿名类的对象。但是您不是在调用
新程序吗rammerInterview(){…
?从技术上讲,您正在创建一个接口实例。我仍然对这里发生的事情有点困惑。如果这个匿名类
ProgrammerInterview
是在
main()
方法中创建的,那么我们可以通过调用
p.read()来访问它的方法
read()
。尽管没有解释,但这似乎是最正确的答案。对于Android程序员,Google提供了一个类实例化内部接口的示例。这正是我需要的。