亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

泛型接口后的尖括號是干嘛的?

泛型接口后的尖括號是干嘛的?

fenkapian 2017-05-20 21:23:28
比如下段代碼,尖括號里那個類是干嘛的?class Employee implements Comparable<Employee> {? public int conpareTo(Employee o) {? ? ? return Double.compare(salary,o.salary);? }}要是沒有那個尖括號,這個實現類里的方法就應該寫成下面這樣,為什么?public int compareTo(Object o) {? ?Employee e = (Employee)o;? ?return Double.compare(salary, e.salary);}
查看完整描述

3 回答

已采納
?
一生放蕩不羈丶人稱小小風

TA貢獻7條經驗 獲得超10個贊

這個嘛.

泛型是用來處理具有相同處理邏輯,但是處理的數據類型不同的情況.

也就是泛型類只指代了邏輯,沒指定處理的數據類型,而在創建泛型類的對象時候進行動態指定數據類型.

尖括號中的內容<E>便是你告知編譯器你創建的這個泛型類對象處理哪種數據類型.比如<Employee>,類型為Employee類對象.

同理繼承一個泛型類的時候你也可以為父類指定處理的類型,這樣繼承的子類就是只針對于某種特定類型進行處理.

比如 a implements b<Employee>.

這樣a類接受的參數類型便限定為只能是Employee.

這樣你便可以看出,你上面的類只能接受Employee類型參數,所以直接使用作為參數的Employee對象的成員變量就好了.

而如果你沒用在尖括號中指定特定的類型.便是使用Object類作為類型參數.接受到的參數為object類型(所有類型的父類),

如果你使用Employee類型作為參數傳遞進來,因為是Object子類所以可以傳遞過來,但是在類中處理的是Object類型,

如果你想使用Employee類中的特有變量,便要將Object類型向下強制轉型為Employee類型對象.

比如: Employee e=(Employee)o;

這樣變可以使用Employee中的字段e.salary.

查看完整回答
1 反對 回復 2017-05-20
?
精慕門9254224

TA貢獻167條經驗 獲得超46個贊

那就是范型對應的類么,如果你不填寫employee,范型默認用超類Object來對應,那么你就要向下轉型了!
查看完整回答
反對 回復 2017-05-20
  • 3 回答
  • 1 關注
  • 4957 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號