当前位置: 首页 > 知识库问答 >
问题:

[duplicate]的Java泛型含义

宋岳
2023-03-14
Class<?>
ComboBox<Order> box = new ComboBox<>();

共有1个答案

何嘉运
2023-03-14

它被称为通配符,它只是意味着您不需要指定泛型类型。它有时是有用的,但一般不应该使用。可以安全使用它的一种情况是使用类型绑定:

public void withWildCard(List<? extends Collection<Integer>> collections) { 
    ...
}

public void withoutWildCard(List<Collection<Integer>> collections) { 
    ...
}

List<Collection<Integer>> listOfCollections;
withWildcard(listOfCollections); // valid call
withoutWildcard(listOfCollections); // valid call

List<List<Integer>> listOfLists;
withWildcard(listOfLists); // valid call becase List is a subclass of Collection
withoutWildcard(listOfLists); // invalid call, does not compile because List does not match Collection

顺便说一下,你问题中的片段是错的。应该是

ComboBox<Order> box = new ComboBox<>();

如果不在声明端指定泛型类型,编译器将无法推断菱形运算符(<>)的类型。

 类似资料:
  • 问题内容: 我的任务是用Java编写哈希表,该哈希表必须适用于任何数据类型。我正在编写的代码规则如下:-哈希表必须具有一个数组作为基础数据结构,其大小在构造对象时确定- 发生冲突时,应该放置碰撞的元素链接列表,该列表包含哈希表中该索引(键)处的所有元素 因此,对于基础数据类型,我做了一个LinkedList类型的数组(自定义,不是Java API LinkedList)。 当然,问题是实例化此数组

  • 我发现的最接近的问题(方法链接:在多级继承的情况下如何使用getThis()技巧)并没有直接回答我的问题。我目前正在使用morphia,正在建立一个rest服务。我已经看过很多版本如何实现这一点,并决定这样做。我完全愿意接受建议,但是,学习如何解决这个问题,将有助于我的编码实践,至少我认为会。此外,我知道我的命名约定可能会被取消,所以我也愿意接受这样的更正:) 这是我的代码: 最终,我希望有一个学

  • 问题内容: 我有一个代表文本片段的泛型类。该文本片段可能具有多种不同模式(突出显示的不同类型)中的任何一种。这些模式用枚举表示。每个项目的Enum可能不同,但是它必须实现一个接口,该接口提供了一种将其中两个结合的方法(可以突出显示并加粗显示)。所以我有一个界面: 然后我的TextFragment是文本字符串和模式的容器。但是当我尝试声明该类时: 我收到以下错误: 令牌“扩展”的语法错误,预期 根据

  • 如何获取这个类的类型?对于上下文,我使用ModelMapper,我需要类类型T从S转换为T。 背景: 我已经尝试了N种方法,其中我放置了“//一些方法来获取类型”,但没有任何效果。例如: 或

  • 我有以下问题。 我必须将json请求解析为包含泛型类型字段的对象。 编辑 我使用常规类类型进行了一些测试(因此我在将其替换为泛型之前使其工作)。现在解析单个元素效果很好。 问题是何时需要从该类中解析出列表对象。 所以我不得不告诉jackson,我的T是list类型,而不仅仅是AlbumModel。 这是我尝试过的。 但是上面的代码不起作用。这种情况的解决方案是什么? 我的泛型类型在List响应模型

  • 问题内容: 如果在Java中创建泛型类(该类具有泛型类型参数),则可以使用泛型方法(该方法带有泛型类型参数)吗? 考虑以下示例: 正如您对通用方法所期望的那样,我可以使用任何对象调用的实例: 但是,如果我尝试使用 不 指定泛型类型的实例,则无论传入什么,我都会调用返回, 奇怪的是,如果返回类型是通用类,它将编译(例如(实际上,这可以解释-参见下面的答案)): 此外,如果输入通用类,即使仅使用通配符