Java中接口和实现类的使用差异

Java中接口和实现类的使用差异,java,class,interface,Java,Class,Interface,可能重复: 为什么建议这样做: List<String> myArrayList = new ArrayList<String> 或与Map接口和HashMap类相同 而不是: ArrayList<String> myArrayList = new ArrayList<String> 因为myArrayList变量的使用代码不会绑定到此接口的特定实现。因为myArrayList变量的使用代码不会绑定到此接口的特定实现。您说的第一行是,您的代码

可能重复:

为什么建议这样做:

List<String> myArrayList = new ArrayList<String>
或与Map接口和HashMap类相同

而不是:

ArrayList<String> myArrayList = new ArrayList<String>

因为myArrayList变量的使用代码不会绑定到此接口的特定实现。

因为myArrayList变量的使用代码不会绑定到此接口的特定实现。

您说的第一行是,您的代码需要一个列表,在第二行中,您说您的代码需要一个ArrayList。通常情况下,您需要对变量实例进行路径选择。如果您现在出于某种原因更改myArrayList实例,您将不得不更改太多的代码。

第一行表示您的代码需要一个列表,第二行表示您的代码需要一个ArrayList。通常情况下,您需要对变量实例进行路径选择。如果您现在出于某种原因更改myArrayList实例,则必须更改太多代码。

您不应使用:

List<String> myArrayList = new ArrayList<String>
另一个答案已经解释了为什么应该使用类型列表而不是ArrayList,除非您确实需要列表接口中缺少的ArrayList功能

但我认为使用专有名称更为重要。因此,如果您使用List作为变量的类型,则名称不应表明它是ArrayList。如果名称指示变量的使用,那就更好了

是的,这很挑剔。但是,使用好的名字可以让你在一年后以及同事们更容易理解代码。

你不应该使用:

List<String> myArrayList = new ArrayList<String>
另一个答案已经解释了为什么应该使用类型列表而不是ArrayList,除非您确实需要列表接口中缺少的ArrayList功能

但我认为使用专有名称更为重要。因此,如果您使用List作为变量的类型,则名称不应表明它是ArrayList。如果名称指示变量的使用,那就更好了

是的,这很挑剔。但是,使用好的名字将使一年后的代码更容易理解,同事也更容易理解