簡體   English   中英

如何調用以泛型T []作為參數的方法?

[英]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};

由於自動裝箱,上述操作是可能的,並且intInteger 分配兼容

現在,如果要調用它,則現在將必需的參數傳遞給它。

qsort(vals, 0, 10);  // for instance

暫無
暫無

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

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