2 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
寫成Compatable[]的參數(shù),sort方法就只能接收對象為參數(shù),而簡單類型就不能用了,如
int [] a ={1,2,3,6,4,3,23,5,6,7,9}; Arrays.sort(a);//a = [1, 2, 3, 3, 4, 5, 6, 6, 7, 9, 23]

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
真正的原因是因?yàn)镴ava數(shù)組的一個(gè)特性導(dǎo)致不得不這樣設(shè)計(jì)。簡單來說,Java數(shù)組的運(yùn)行時(shí)類型不是由其元素類型決定,而是由其實(shí)例化時(shí)的類型決定的。
比如下面這個(gè)數(shù)組:
Object[] arr = { "hello", "world"};
它的實(shí)際類型就是Object[]
(大括號的簡寫法相當(dāng)于Object[] arr = new Object[] {...};
,因此其實(shí)例化類型為Object[]
)。雖然它里面的元素全部都是字符串,按照直覺你可能會(huì)覺得可以把它轉(zhuǎn)換為String[]
數(shù)組,但其實(shí)不然,下面的轉(zhuǎn)換在運(yùn)行時(shí)將會(huì)報(bào)錯(cuò):
String[] arr2 = (String[]) arr;
注:如果反過來,將一個(gè)String[]
數(shù)組轉(zhuǎn)換為Object[]
數(shù)組則是可行的,因?yàn)榍罢呤呛笳叩淖宇愋汀?/blockquote>所以這會(huì)導(dǎo)致什么問題?如果
Arrays.sort()
聲明為接收Comparable[]
數(shù)組,那么就要求程序員在使用的時(shí)候必須一開始就為該數(shù)組實(shí)例化為一個(gè)Comparable[]
數(shù)組或其兼容數(shù)組,而不能等到調(diào)用sort()
方法的時(shí)候再臨時(shí)轉(zhuǎn)換,因?yàn)榫拖袂懊娴睦幽菢?,這種轉(zhuǎn)換很有可能會(huì)失敗。
- 2 回答
- 0 關(guān)注
- 387 瀏覽
添加回答
舉報(bào)