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

未绑定通配符和原始类型之间的区别

杜绍元
2023-03-14
问题内容

我正在阅读有关泛型的信息,但我不了解未绑定通配符的需求以及它与原始类型的区别。我读了这个问题,但仍然不清楚。在未绑定通配符的
Java教程页面中,我得到了以下两点,但我不明白第一点:

  • 如果您正在编写可以使用Object该类中提供的功能实现的方法。
    * 当代码在泛型类中使用不依赖于type参数的方法时。例如,List.size()List.clear()。实际上,Class<?>之所以经常使用它是因为其中的大多数方法Class<T>都不依赖T

有人可以用外行语言解释未绑定的通配符和原始类型之间的区别吗?

如何List<?>从不同List<Object>


问题答案:

有什么List<?>不同List<Object>

主要区别在于第一行可以编译,而第二行则不能:

List<?> list = new ArrayList<String> ();
List<Object> list = new ArrayList<String> ();

但是,由于您不知道泛型List<?>是什么,因此无法使用其参数化方法:

List<?> list = new ArrayList<String> ();
list.add("aString"); //does not compile - we don't know it is a List<String>
list.clear(); //this is fine, does not depend on the generic parameter type

至于原始类型(没有泛型)的区别,下面的代码可以编译并正常运行:

List list = new ArrayList<String> ();
list.add("aString");
list.add(10);


 类似资料:
  • 问题内容: 我是Generic的新手,我的问题是:两个函数之间有什么区别: 功能1: 功能2: 问题答案: 第一个签名说:是一个ES列表。 第二个签名说:是某种类型的实例的,但是我们不知道类型。 当我们尝试更改方法时,区别变得明显,因此它需要第二个参数,该参数应添加到方法内部的列表中: 第一个效果很好。而且你不能将第二个参数更改为可以实际编译的任何参数。 实际上,我发现了一个更好的区别说明: 一个

  • 问题内容: 我正在阅读有关有效Java泛型的章节。 帮助我理解之间的区别,以及? 以下段落摘自本书。 快速回顾一下,它是表示可以包含任何类型的对象的集合的参数化类型,是表示只能包含某些未知类型的对象的集合的通配符类型,并且是选择退出通用类型的原始类型系统。 什么是“某些未知类型”?是所有未知类型的类型吗?在这种情况下,和之间的具体区别是什么? 问题答案: 原始类型()将类型视为完全 没有通用类型信

  • 问题内容: 有人可以解释一下这两种方法之间的区别吗?都一样吗 就解决方案而言,它们在我看来确实相同。如果它们相同,为什么需要? 方法1,无界 方法2,无界: 方法1,有界 方法2,有界: 问题答案: 它们相同,因为它们接受相同的参数类型。 但是,使用(或其他任何一种)标识类型可以让您在其他地方引用该类型。 编辑:示例: 您无限制的示例未充分利用参数化类型的功能。你有: 这对于打印字符串表示的示例就

  • 问题内容: 与完全跳过它们相比,在类中使用通配符类型的泛型有什么优势吗? 问题答案: 有很多优点。 他们不会像使用原始类型那样产生编译器警告 它们提供了更多的类型安全性。例如,考虑是否是。如果您使用代替,则可以执行以下操作: 即使该列表仅 应 包含s。如果返回,则您将无法添加 任何 内容(除外),因为列表类型未知。 他们记录的东西与原始类型完全不同,即使用某种 未知但特定的类型进行输入 。

  • 问题内容: 考虑以下方法: 和 这两种方法有什么区别?如果没有差异,为什么要使用第二个? 问题答案: 不允许您在列表中添加对象。请参阅下面的程序。这是我们传递给method的特定列表类型。 特定方式,列表是使用特定类型创建的,并传递给method 。不要与 单词 混淆。 具体可以是任何普通对象,例如Dog,Tiger,String,Object,HashMap,File,Integer,Long

  • 问题内容: 您能帮助我了解 无界通配符类型列表 和 原始类型列表 之间的区别吗? 除此之外,有人可以帮助我了解什么是有 界类型参数列表 ? 问题答案: 以下是这三个的摘要: :没有类型参数的列表。它是一个列表,其元素可以是任何类型- 元素可以是不同类型 。 :具有无限制类型参数的列表。它的元素是特定但未知的类型。 元素必须都是相同的类型 。 :带有类型参数称为的列表。所提供的类型必须是extens