![]() |
1
2
在Java泛型中,必须指定变量类型的泛型类型,而不是其实现。 这意味着你必须
或
用于要注册的类型。自Java 7以来,您就被允许使用diamond运算符,这意味着编译器能够从数据类型推断实现类型。如果你有
然后java假设泛型类型只是一个对象。这就是为什么会得到未经检查的赋值,因为就编译器而言,X包含的是对象,而不是整数。 案例3与案例2几乎相同,实现是一个运行时特性,因此编译器总是假定它是一个对象。案例3基本上就是Java 5中的情况。 |
![]() |
2
-1
首先
不同于
好技术上是这样,但是通过删除左侧的类型,您就告诉编译器变量没有特定的类型。 我给你举个例子。
在Java中,变量的左边部分是最重要的(在Java10中不再有效),这就是为什么如果你以这种方式声明变量,你必须在左边告诉他他的类型(在Java 10中,这不再是问题,你在左边使用“var”),在右边你可以只使用diamond类型<>。 |
![]() |
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 2 年前 |
![]() |
milczi · Swift通用无强制展开向下投射 6 年前 |
![]() |
bugs · Typescript-泛型类型扩展自身 6 年前 |
![]() |
John Bustos · C#通用工厂模式,不说明通用工厂模式的类型 6 年前 |
![]() |
Blankdud · 具有默认数据的通用对象创建方法 6 年前 |
![]() |
Tim Hutchison · 从泛型对象列表中读取泛型值 6 年前 |