[英]How do I call a method with a generic type T[] as an argument?
好的,說我有這個方法頭:
public static <T extends Comparable<T>> void qSort(T[] a, int p, int q)
假設我想讓T [] a保持{5,2,7,3,8,9}。 我將如何創建此T [] a,如果要測試該方法,將如何調用該方法? 我有點困惑。
我試圖更新我的問題以使其更加清楚。 如果不清楚,請發表評論。
有什么事嗎
Java具有稱為自動裝箱的功能 。 你的例子看起來像
qSort( new Integer[]{5,2,7,3,8,9}, p, q)
請注意,該數組不是基於原始類型int
,而是內部的int
值由編譯器自動“自動裝箱”為Integer
。 由於Integer
實現了Comparable
,這應該可以工作。
qSort( new Integer[] { 5,2,7,3,8,9 }, 0, 5 );
需要注意的重要一點是,第一個參數的類型是Integer[]
,而不是int[]
。
首先,您不能使用原始數組來保存對象數組中期望的元素; 它們是不兼容的類型。
請記住,泛型參數T
始終是一個Object
(相對於其邊界)。 如果要在其中獲取任何類型的數字引用,則還應將其綁定到Number
(它是所有數字包裝器類的超類)。
public static <T extends Number & Comparable<T>> void qSort(T[] a, int p, int q)
現在,對於要傳遞的數組,它必須是Integer
的數組,而不是int[]
。
Integer[] vals = new Integer[]{5,2,7,3,8,9};
由於自動裝箱,上述操作是可能的,並且int
與Integer
分配兼容 。
現在,如果要調用它,則現在將必需的參數傳遞給它。
qsort(vals, 0, 10); // for instance
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.