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

ArrayList通用(无类型)

章增
2023-03-14
问题内容

最近,我读了一段对我来说似乎很奇怪的代码。众所周知,在需要使用集合时,需要初始化它们的泛型类型。此外,我们知道集合可以包含集合作为其元素。

代码:

public class Solution {
public static void main(String args[]) {
    ArrayList res = returnlist();
    System.out.print(res.get(0));
}
public static ArrayList<ArrayList<Integer>> returnlist() {
    ArrayList result = new ArrayList();
    ArrayList<Integer> content = new ArrayList<Integer>();
    content.add(1);
    result.add(content);
    return result;
}}

我的问题是

  • 我们为什么要使用它ArrayList result = new ArrayList();来创建对象,因为我们没有为集合提供元素的实际类型。
  • 为什么我们要使用result.add(content);集合“结果”添加到集合中,而“结果”只是一个简单的集合。我们没有把它定义为一个ArrayListArrayList

问题答案:

Java通用集合没有存储类型,以确保与J2SE
5.0以前的版本向后兼容。将类型信息添加到通用集合后,该信息将被删除。这称为类型擦除。

这意味着可以将泛型集合分配给非泛型引用,并且可以将泛型类型化集合中的对象放置在非泛型,非类型化集合中。

所有Java泛型实际上所做的就是确保您不能将错误的类型添加到泛型列表中,并避免进行显式的检索类型转换。即使它仍然隐式完成。

除此之外

  • 这个答案的Java部分会更深入地介绍我刚才所说的内容
  • 本文还基本上以更完整的方式涵盖了您的要求
  • 其他的事情要注意与类型消除


 类似资料:
  • 问题内容: 在常规数组列表初始化中,我们习惯于如下定义泛型类型, 但是,如果是ArrayLists的ArrayList,我们如何定义其通用类型? 数组列表的数组列表代码如下: 只需共享语法,如果有人对此有想法。 问题答案: 你可以做 如果您需要一个列表数组,可以执行 并安全地忽略或禁止该警告。

  • 1.第一:两者的区别是什么 2.第二: 如果我这样声明我的列表: 为什么这仍然有效:

  • 问题内容: 这是hrert的问题Generic类与其他类型的Collectiongetter的后续文章。如果您可以为我的问题找到更好的标题,请随时对其进行编辑: 下面的代码包含一个具有返回类型方法的通用类和具有返回类型方法的另一个方法,显然与。 现在,如果我实例化一个原始数据(我永远不会做,所以这个问题更多是一个理论问题,以帮助理解正在发生的事情),那么在增强的for循环中调用该方法将不起作用,因

  • 创建一个Book类,下面是这些方法的作用。我目前被困在如何添加关于删除作者的名字和电子邮件的方法。我不能上传UML映像,因为我是新来的,没有足够的代表点。 在构造函数中创建authors ArrayList的新实例。 实现方法addAuthor(Author Author)将给定的Author实例添加到本书中。 实现公共方法removeAuthorByName(String name),该方法使用

  • 使用Gson库,我通过以下代码将JSON字符串转换为ArrayList对象: 您可以在第二段代码中看到,我使用反射来指定类的类型;但是对于第一段代码,我不知道如何使用反射指定列表的类型。 我该怎么办?!