是否可以在java中为接口创建对象?

Ash*_*win 0 java interface

在java中,接口仅包含方法类型,名称和参数.实际的实现是在实现它的类中完成的.鉴于此,如何创建一个接口实例并将其用作类对象?有许多这样的接口,例如org.w3c.dom.Node.

这是我正在使用的代码:

DocumentBuilderFactory fty = DocumentBuilderFactory.newInstance();
fty.setNamespaceAware(true);
DocumentBuilder builder = fty.newDocumentBuilder();
ByteArrayInputStream bais = new ByteArrayInputStream(result.getBytes());
Document xmldoc = builder.parse(bais);
NodeList rm1 = xmldoc.getElementsByTagName("Subject");
Node rm3 = rm1.item(0);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

您永远不会创建接口的实例.您可以拥有该接口类型的字段/参数/局部变量,但这很好 - 分配给此类变量的值将始终为null或对接口的某个具体实现的实例的引用.关键是只处理接口的代码不需要关心实现是什么.

一个很好的例子是Collections.shuffle(List)- 我可以提供任何列表实现,它只会使用接口中声明的方法.在实际的对象总是会有一些具体实现的实例,但该shuffle方法不需要知道或关心.