当前位置: 首页 > 面试题库 >

为什么将对象分配给接口?

晏修诚
2023-03-14
问题内容

我多次听说,在实例化对象时应该执行以下操作:

“接口”名称=新的“类”();

例如,针对实现的类链表List

List<String> name = new LinkedList<String>();

LinkedList 实现许多接口,包括队列,双端队列等。上面的代码和

LinkedList<String> name = new LinkedList<String>();

要么

Queue<String> name = new LinkedList<String>();

为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。


问题答案:

LinkedList<String> name = new LinkedList<String>();在Java
7中是多余的。可以将其重写为LinkedList<String> name = new LinkedList<>();

你想写类似的原因:

// Java 7 way:
List<String> name = new LinkedList<>();

如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵活。您应该注意的是,您可以使用的方法仅限于左侧类型(List在这种情况下)。这意味着,如果您使用层次结构中较高的类型(这是Object极端的示例),则可能无法获得所需的所有功能。



 类似资料:
  • 问题内容: 我一直在使用IIFE中和,并一直在使用的结构如下: 方法1: 但是,我经常看到以下情况,其中将变量分配给 方法2: 注意: 此问题 不是 关于此模式是什么或IIFE是什么。这与为什么要 在IIFE上 使用返回变量及其与Angular实践的关系有关。 在Angular方法1中工作正常,但是在我看到的许多原始JS示例中,都使用了方法2。我的假设是,封装在其中的任何内容都可以通过它进行调用。

  • 问题内容: 以下语句: 因错误而失败: 为什么在这里需要演员表? 我发现了几篇文章,解释了为什么您不能进行反向操作(将T分配给a),但这是显而易见的(可以理解)。 注意:我在Eclipse Luna下对此进行编码,所以我不知道这是Luna Quirk还是泛型中确实不了解的东西。 问题答案: 协方差vs协方差vs不变性 是 不变的 。 结果是, 是 不是一个亚型 的 在Java中,变量可以保存 相同

  • 问题内容: 我试图为对象类型分配一个lambda: 它给我一个错误的说法: 为什么会这样,怎么做? 问题答案: 这是不可能的。根据错误消息不是功能接口,即具有单个公共方法的接口,因此您需要使用引用类型,例如

  • 我只是在进行围棋之旅,我对指针和接口感到困惑。为什么这个Go代码不编译? 也就是说,如果是一个,为什么不是一个? 我收到的错误消息是:

  • 问题内容: 之间有什么区别: ; 和 (只是声明) 有人可以回答我吗? 问题答案: 这取决于您声明变量的范围。例如,在这种情况下, 局部变量 没有,您将不得不手动分配 null ,在这种情况下,由于实例变量获取默认值,因此在 实例变量的 情况 下 分配null是多余的。

  • 问题内容: 我是Java或Selenium的新手。 我只需要帮助来了解一个基本问题。 为什么我们将firefoxdriver实例分配给WebDriver?WebDriver driver =新的FirefoxDriver() 我知道这是Java中的后期绑定,因为我们可以在以后的时间将IEDriver或其他实例分配给WebDriver。 问题1:但这适用于课堂,对吗? Question2:WebDr