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

Java泛型理解[重复]

濮阳霄
2023-03-14

你能向我解释一下这里发生了什么,为什么它没有错误。

List list = new ArrayList<String>();
list.add(1);

很抱歉,如果已经有类似的问题,我没有正确地表达这个问题,所以不能用谷歌搜索它

共有3个答案

汪正卿
2023-03-14

引用的泛型很重要。所以

List list = new ArrayList<String>();

毫无意义。一定是

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

如果没有为引用类型(而不是实际的对象类型)提供at泛型,则将其视为对象。所以你可以添加任何内容。

泛型也是一种编译时现象。所以当你说它是如何工作的时候,它意味着你的代码是如何编译而没有编译错误的。原因很简单,没有泛型与引用对象相关联,因此被视为对象(默认)。

邵绪
2023-03-14

使用原始类型列表大致相当于使用列表

list.add(1);

自动框一个整数添加到List

平嘉熙
2023-03-14

这里发生的事情暴露了类型擦除的弱点,这是Java泛型背后的机制。当您更改其泛型类型参数时,ArrayList的实现不会改变:它总是java.lang.场景背后的对象。

由于在声明列表时没有给接口提供类型参数,编译器允许您添加任何类型的对象,而不仅仅是Strings。特别是,int被自动装箱到java.lang.整数中,因此1的值可以添加到您的列表中。

 类似资料:
  • 这可能是一个愚蠢的问题,所以请原谅我的无知。 如果我用: 编译器说foo.execute(val)是一个错误。带有一条沿着setWrapped方法(bar )行的消息,类型为foo 不适用于参数(bar )。 如果我想把福变成

  • 这可能是一个非常愚蠢的问题,但我不明白编译器为什么抱怨和编译。 我有两个非常简单的课程: 现在代码是: 我知道它为什么起作用。 块2,我有

  • 本文向大家介绍Java泛型详解,包括了Java泛型详解的使用技巧和注意事项,需要的朋友参考一下 1. Why ——引入泛型机制的原因     假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象。然而,过了一阵,我们想要实现一个大小可以改变的Date对象数组,这时我们当然希望能够重用之前写过的那个针对String对象的Arra

  • 我在Spring批处理StepBuilder类中看到了以下方法定义。这里第一个角括号有什么用?

  • 本文向大家介绍初步理解Java的泛型特性,包括了初步理解Java的泛型特性的使用技巧和注意事项,需要的朋友参考一下 在Java SE1.5中,增加了一个新的特性:泛型(日本语中的总称型)。何谓泛型呢?通俗的说,就是泛泛的指定对象所操作的类型,而不像常规方式一样使用某种固定的类型去指定。泛型的本质就是将所操作的数据类型参数化,也就是说,该数据类型被指定为一个参数。这种参数类型可以使用在类、接口以及方

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