現在有一個新的需求,沒有String類型成績了,但是成績依然可能是整數,也可能是小數,這是我們不希望用戶將泛型指定為除數字類型外的其他類型,我們就需要使用到泛型的上界定義:
上界👇只能使用其本身或子類
繼承自Number類的就符合要求👇
報錯👇
也可以創建對象這樣設置,上界必須是Integer👇
下界👇
下界不能使用在泛型方法中,在這用👇
這里是隱式類型轉換為Object👇
不能使用其子類👇下界只能用他的父類或他本身
Number為上界👇👇👇
?快速獲取類型var👇
上界Number獲取的是Number👇
?強轉子類Integer👇
同理Integer為上界👇👇👇
?本質上還是 ?extends Number, 不能確定是Number的類及其哪個子類,這樣子去setValue,無法確定是否是這個類型,雖然他確實是Integer👇👇
大概就是無法確定是否能夠接受,例如父類無法接受子類。
限定下界就沒有上述的問題👆👇👇👇下界的話