Java 如何接受int[]作为泛型类型参数而不是int?
我注意到,我们可以创建泛型,类型参数为Java 如何接受int[]作为泛型类型参数而不是int?,java,arrays,generics,inheritance,Java,Arrays,Generics,Inheritance,我注意到,我们可以创建泛型,类型参数为int[]但不能创建int 我发现泛型G的类型参数T应该是Object类的子类 因为基元类型不是对象类的子类,所以它们不能用作泛型的参数类型 但我还有一些疑问: 如何使用基元数组作为泛型类型参数 基元/引用类型数组是否扩展对象类 数组是一种特殊类型的类,不能用作普通类吗 是否还有其他特殊类,如数组。(如果这个问题的答案非常广泛,那么忽略这个问题) 我环顾四周,发现数组实际上是扩展对象的类。(我们使用new关键字创建一个数组) 但是我找不到其余问题的答案。ja
int[]
但不能创建int
我发现泛型G
的类型参数T
应该是Object类的子类
因为基元类型不是对象类的子类,所以它们不能用作泛型的参数类型
但我还有一些疑问:
但是我找不到其余问题的答案。java中有两类类型:基元类型和引用类型(即对象) 类型(无论是基元数组还是对象数组)始终是引用类型。数组类型的变量保存对
对象的引用
基元数组仍然是对象
,
例如,int[]
是对象的子类型。您可以在int[]
上调用Object
中的任何方法
泛型可以保存任何非基元类型的内容。数组不是基元类型,因此允许使用集合
。请参阅:基元类型的数组实际上是一个对象。这样的数组可以在任何可以使用对象的地方使用。数组具有公共length
属性,该属性返回数组的长度
数组不能扩展,但对于任何类型的T
都存在T[]
。数组或多或少有点特殊,是的
另一个特殊的类是Enum
类。那么我们如何使用基元数组呢?
-使用它的目的是什么?您的第一个问题是不是想说“既然基元不能用作泛型类型,为什么我们可以将基元数组用作泛型类型?”这是因为int[]
是Java中的一个对象。“您可以在int[]上调用Object中的任何方法。”这是真的,但它们基本上都是无用的(例如,toString、equals、hashCode等几乎肯定不会执行您想要的操作)。