Java 是否可以为接口类型创建对象

Java 是否可以为接口类型创建对象,java,jdbc,interface,database-connection,driver,Java,Jdbc,Interface,Database Connection,Driver,这是一个JDBC编程行。在这一行中,我们正在为连接接口创建一个对象。如何可能?接口是“con”变量的参考类型。接口的实现来自您为问题注册的JDBC驱动程序。DriverManager返回用于连接的驱动程序实现以及java.sql中的所有其他接口类型。该接口是“con”变量的引用类型。接口的实现来自您为问题注册的JDBC驱动程序。DriverManager返回连接的驱动程序实现以及java.sql中的所有其他接口类型。赋值右侧生成的对象是连接的子类型:实现连接接口的类的实例。您不需要知道确切的类型

这是一个JDBC编程行。在这一行中,我们正在为
连接
接口创建一个对象。如何可能?

接口是“con”变量的参考类型。接口的实现来自您为问题注册的JDBC驱动程序。DriverManager返回用于连接的驱动程序实现以及java.sql中的所有其他接口类型。

该接口是“con”变量的引用类型。接口的实现来自您为问题注册的JDBC驱动程序。DriverManager返回连接的驱动程序实现以及java.sql中的所有其他接口类型。

赋值右侧生成的对象是连接的子类型:实现连接接口的类的实例。您不需要知道确切的类型是什么,因此您可以使用具有不同连接字符串的同一行并接收MySqlConnection、DB2Connection、OracleConnection或WhatHaveYouConnection实例,该实例将正确处理通过con变量进行的后续数据库调用

例如,见:


赋值右侧生成的对象是连接的子类型:实现连接接口的类的实例。您不需要知道确切的类型是什么,因此您可以使用具有不同连接字符串的同一行并接收MySqlConnection、DB2Connection、OracleConnection或WhatHaveYouConnection实例,该实例将正确处理通过con变量进行的后续数据库调用

例如,见:


是一个函数,返回实现接口的类的实例。这种方法允许减少依赖性,这也在讨论中。

是一种返回实现接口的类实例的方法。这种方法允许减少依赖性,这也进行了讨论。

DriverManager.getConnection(“jdbc:odbc:MyDataSource1”)以某种方式创建了一个实现连接接口的对象

只要返回的对象是
Connection
类型,就可以通过
Connection
类型的变量保存对它的引用。只要是
连接
,您就不需要关心实际对象是什么-也就是说,返回的对象实现了
连接
接口

这和例句的原理是一样的

Connection con = DriverManager.getConnection("jdbc:odbc:MyDataSource1");

DriverManager.getConnection(“jdbc:odbc:MyDataSource1”)以某种方式创建了一个实现连接接口的对象

只要返回的对象是
Connection
类型,就可以通过
Connection
类型的变量保存对它的引用。只要是
连接
,您就不需要关心实际对象是什么-也就是说,返回的对象实现了
连接
接口

这和例句的原理是一样的

Connection con = DriverManager.getConnection("jdbc:odbc:MyDataSource1");

您需要了解Java接口是一种契约:实现接口的对象承诺在接口中呈现所有内容

对象还能做什么,与这个特定接口无关,事实上,通常情况下,给定接口有多个可能的候选者,调用代码基本上不关心(或需要关心)它接收的是哪一个

在JDBC案例中,您请求一个数据库连接,DriverManager根据您传递的字符串选择一个并返回给您。您需要知道的是,您得到的连接接口合同中列出了所有方法,您可以根据需要使用这些方法


因此,当在赋值的左侧使用接口时,这意味着只要它实现了接口,就可以获得任何对象。当在左侧使用一个类时,您必须呈现该类(或子类)的一个对象,该对象已被证明具有更大的限制性。

您需要理解Java接口是一个契约:实现接口的对象承诺在接口中呈现所有内容

对象还能做什么,与这个特定接口无关,事实上,通常情况下,给定接口有多个可能的候选者,调用代码基本上不关心(或需要关心)它接收的是哪一个

在JDBC案例中,您请求一个数据库连接,DriverManager根据您传递的字符串选择一个并返回给您。您需要知道的是,您得到的连接接口合同中列出了所有方法,您可以根据需要使用这些方法


因此,当在赋值的左侧使用接口时,这意味着只要它实现了接口,就可以获得任何对象。当在左侧使用一个类时,您必须提供该类(或子类)的一个对象,该对象已被证明具有更大的限制性。

“如何可能”使用一行代码?把它放在你的应用程序中!文案编辑;如果不正确,请还原。“如何可能”使用一行代码?把它放在你的应用程序中!文案编辑;如果不正确,请还原。这可能是:while(true){System.out.println(“bzzzzzzzz”);}getInstrument()应返回nopitrument且不为null。否则,您将在某天早上3点调试NullPointerException。这可能是:while(true){System.out.println(“bzzzz”);}getInstrument()应返回一个NOPInstrument且不为null。否则,您将在某天凌晨3点调试NullPointerException。