为什么可以将int []作为通用类型参数,但不能将int作为常规类型参数? [关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么可以将int []作为通用类型参数,但不能将int作为常规类型参数? [关闭]相关的知识,希望对你有一定的参考价值。
我注意到我们可以创建类型参数为int[]
但不能为int
的泛型。
我发现泛型T
的Type参数G<T>
应该是Object类的子级。
因为基本类型不是Object类的子类,所以它们不能用作泛型的参数类型。
但是那我几乎没有疑问:
- 然后我们如何使用原始数组?
- 原始/引用类型的数组是否扩展了对象类?
- 我们可以扩展它们并创建自定义数组类吗?
- 或者数组是不能用作普通类的特殊类型的类吗?
- 还有其他特殊的类,如数组。(如果对此的回答很广泛,则忽略这一类)
我环顾四周,发现数组实际上是扩展对象的类。(我们使用new关键字创建数组)
但是我找不到其他问题的答案。
原始类型的数组确实是一个对象。这样的数组可以在任何可以使用对象的地方使用。数组具有公共length
属性,该属性返回数组的长度。
无法扩展数组,但是对于任何类型的T
,都存在一个T[]
。数组多少有些特殊,是的。
另一个特殊类是Enum
类。
java中有两类类型:基本类型和引用(即对象)
array类型(无论是原始数组还是对象数组)始终是引用类型。数组类型的变量包含对object
的引用。
基本数组仍然是Object
,例如,int[]
是Object
的子类型。您可以在Object
的int[]
中调用任何方法。
泛型可以容纳任何不是基本类型的东西。数组不是原始类型,因此允许使用Collection<int[]>
。请参阅:https://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html
以上是关于为什么可以将int []作为通用类型参数,但不能将int作为常规类型参数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Java中的通用方法-如何将参数类类型作为返回类型返回[重复]
默认泛型可作为参数正常使用,但不能作为函数参数的返回类型使用