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

任何简单的方法来解释为什么我不能列出 动物=新的ArrayList()?

商开宇
2023-03-14
问题内容

我知道为什么不应该这样做。但是有办法向外行解释为什么这是不可能的。您可以向外行轻松解释:Animal animal = new Dog();。狗是一种动物,但是狗的列表不是动物的列表。


问题答案:

假设您创建了“ 狗” 列表。然后,将其声明为 List 并将其交给同事。他 并非没有道理地 相信自己可以在里面放一只

然后,他将其还给您,您现在有了“ 狗” 列表,其中有“ ”。混乱随之而来。

重要的是要注意,由于列表的可变性,存在此限制。在Scala中(例如),您可以声明 Dogs* 列表是 Animals
列表。这是因为Scala列表(默认情况下)是不可变的,因此将 Cat 添加到 Dogs 列表将为您提供 Animals
列表。

*



 类似资料:
  • 我不明白这一点: 没有这个,我可以做到: 为什么在第一种情况下我不能调用hello()方法,而在第二种情况下我可以调用?

  • 给定以下代码: 在reduce语句之后我需要什么才能看到reduce的结果?如果一个值被推到输入,我不希望看到任何东西。如果推送具有相同键的第二个值,我希望还原器应用(它确实应用了),并且我还希望还原的结果继续到处理管道中的下一个步骤。正如所描述的,我没有在管道的后续步骤中看到任何东西,我不明白为什么。

  • 我为我的密码学初学者水平道歉 在我的项目中,我发现在将密码插入数据库之前需要对密码进行散列,因此我搜索了顶级散列算法,发现了PBKFD2和salt方法。 我这样做的方法是生成随机64char Salt并使用它来散列密码。然后将哈希密码和salt存储在我的数据库中。(注:注册时也会生成密码。这不是我的选择) 登录时,我的Servlet获取密码,然后用数据库中存储的salt散列它。但是我得到了不同的结

  • 我在学校上课: 然后我创建了School的两个实例,并比较了两个实例的相等性: 即使我设置了相同的和到

  • 问题内容: 如何使用Java获取ActiveMQ中的队列长度(发送到队列的未消耗的消息数)? 问题答案: 您必须使用JMX,因为Queue接口不提供此类信息。 检索特定队列大小的示例: 参考:ActiveMQ JMX ,必需的MBean 示例:使用JMX API管理ActiveMQ

  • 但是,正确的数据条目在被调用时会打印出来。我试着在网上寻找我应该做什么的答案,但我找不到任何实际可行的东西。我刚刚开始学习Java,所以可能有一个非常简单的答案,我只是忽略了。如果有人有什么想法,我将不胜感激。