簡體   English   中英

泛型類和通配符的上限

[英]Upper Bound of generic class and wildcard

class Gen <T super Number>           // 1 // IS NOT ALLOWED

void Demo( Gen <? super Number> ob)  // 2 // IS ALLOWED // Gen is a generic class

為什么第一條語句導致編譯時錯誤而第二條語句運行正常

第一個示例是通用類型。 第二個示例是參數化類型。 他們是不同的東西。

  • 通用類型是在類型上參數化的類型的定義。 可以通過為這些類型參數提供類型參數來調用它。
  • 參數化類型是對具有類型實參的泛型類型的調用,無論這些類型實參是類型還是通配符。

泛型類型的type參數的下限不能使用 因此不是Java中的“事物”。

但是,第二個示例的含義是:“ Gen<T>類型的任何參數化,其中type參數是Number的超類型”。 它非常有用,因為它允許通用類型的多態性。

通過提供“受限制的實例化” ,實際上它們的使用可能受到限制 ,但是認為它們的有用性不足以允許使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM