Java 为什么';数组类';具有重载的方法

Java 为什么';数组类';具有重载的方法,java,arrays,generics,Java,Arrays,Generics,在浏览Arrays类的JavaDocs时。我意识到有很多重载方法。比如说, static int binarySearch(byte[] a, byte key) static int binarySearch(char[] a, char key) static <T> int binarySearch(T[] a, T key, Comparator<? super T> c) 静态int二进制搜索(字节[]a,字节键) 静态int二进制搜索(char[]a,cha

在浏览Arrays类的JavaDocs时。我意识到有很多重载方法。比如说,

static int binarySearch(byte[] a, byte key)
static int binarySearch(char[] a, char key)
static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)
静态int二进制搜索(字节[]a,字节键)
静态int二进制搜索(char[]a,char键)
静态int二进制搜索(T[]a,T键,比较器仔细观察:

static <T> int binarySearch(T[] a, T key, Comparator<? super T> c)

静态int-binarySearch(T[]a,T-key,Comparator简而言之,对于相同的功能,使用相同的方法名更容易。大多数方法都设计用于不同的基元类型,最后一种用于对象。泛型类型T[]不适用于基元类型。

简单地说,基元数组不扩展
对象[]
,就像基元类型不是
对象一样。因此,采用
t[]
的通用方法不适用于
int[]

因为
java.util.array
早在java 1.2版本就存在了,在泛型出现之前就已经存在了。它包含了那些重载方法。其次,
byte[]
不能转换为
Object[]
等。

通常不能将数组转换为彼此,例如
long[]
不能转换为
int[]
换句话说,不能将
int[]
视为
t[]