这种情况是我有一个函数,并呼吁Arrays.sort
以某种给定的数组。由于Arrays.sort
可以排序字符串和长,我想用一个单一的签名,而不是两个String[] array
和long[] array
。
我想是这样Comparable[]
,它不会匹配long[]
。我也试着改变long
来Long
。但是装箱和拆箱的过程显著放缓排序。
所以我想知道如果有一种我可以指定两者相匹配?或大致匹配所有支持的类型Arrays.sort
?
简短的回答是不,你不能。
Comparable
是对象/类系统的接口和部分。原语,如long
,是不是该系统中,只有其盒装变体的一部分Long
。
不幸的是,你甚至可以不解决这个使用泛型,因为他们也只适用于类,而不是原语(见为什么不Java泛型支持原始类型?)。
因此,除非项目瓦尔哈拉(值类型)的版本中,您需要为所有的8元可提供硬编码的变体(short
,int
,long
,byte
,char
,float
,double
,boolean
)如果你想避免自动装箱,周围也没有办法。
Java的API必须做到这一点。你看的重载方法Arrays#sort
对所有相关的原语和班一个泛型重载。从它的文档:
sort(byte[] a)
sort(char[] a)
sort(double[] a)
sort(float[] a)
sort(int[] a)
sort(long[] a)
sort(short[] a)
sort(Object[] a)
sort(T[] a, Comparator<? super T> c)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句