2014-03-04 75 views
0

例如,我看到如何理解Java文檔語法

靜態<牛逼延伸可比<? super T >> void parallelSort(T [] a)

根據元素的自然排序,將指定的對象數組按照升序排序爲 。

所以我得到這個是一個靜態方法,它做什麼,但什麼呢<T extends Comparable<? super T>>平均值(返回類型,但它是什麼,是用同樣的方式我會在代碼編寫,或者使用的語法該文檔顯示幾個可能的值)

+4

您需要了解的仿製藥。 – SLaks

+1

[爲什麼此Java方法似乎有兩種返回類型?](http://stackoverflow.com/questions/15281904/why-does-this-java-method-appear-to-have-tworeturn -type) –

+1

它不是*返回類型。 'void'是返回類型。它是*類型推斷的說明符* –

回答

0

<T extends Comparable<? super T>>不是返回類型。 void是返回類型。返回類型前的通用規範爲類型推斷

的參數(T[])的種類從呼叫推斷,而且必須是某種extends Comparable<? super T>

假設你有定義的類:

class Foo extends Comparable<Foo> { ... } 

這意味着:

Foo[] fooArray = ... 
parallelSort(fooArray); 

是合法的,並且在parallelSort()方法中,T將是Foo類型(其執行th e Comparable interface)

這是一個簡單的,不太複雜的例子,沒有遞歸類型。在這種情況下,它說,它返回的推斷類型的列表:

public static <T> <List<T>> myMethod(T arg) { 
    List<T> list = new ArrayList<T>(); 
    list.add(arg); 
    return list; 
} 

類型是從參數推斷:

List<String> list = myMethod("hi");