簡體   English   中英

在Java中使用其他方法簽名

[英]Using a different method signature in Java

以下兩種方法可以很好地編譯,並能代表它們的意思。

public int returnArray()[]
{
    int a[]={1 ,2};
    return a;
}

public String[] returnArray(String[] array[])[]
{
    return array;
}

根據此方法簽名,我們不能以某種方式具有如下所示的方法簽名嗎?

public <T>List rerurnList(List<T> list)<T>
{
    return new ArrayList<T>();
}

此方法旨在返回泛型類型的java.util.List 它不會編譯 為了成功編譯,必須對其進行如下修改。

public <T>List<T> rerurnList(List<T> list)
{
    return new ArrayList<T>();
}

在這種情況下,我們不能像第一種情況那樣具有方法簽名嗎?

出於某種原因,Java允許您像在C語言中那樣定義數組,在變量或方法名稱添加[]修飾符。 但是,使用泛型是不可能的。

泛型類型參數必須與正確的類型聲明,因為它們的類型描述符的一部分 數組也應該這樣聲明,因為它們也是類型描述符的一部分

為了理解為什么編譯器不允許您以這種方式編寫東西(以及為什么它不允許您像第一個示例中那樣編寫東西),我們需要將其分解為幾部分。


public int returnArray()[] { ... }
  • public :公開聲明
  • int :返回類型,整數
  • returnArray :方法名稱
  • () :參數列表(空)
  • [] :哎呀! 返回類型實際上是我們之前所說的數組

這樣更好:

public String[] returnArray(String[] array[])[]
  • public :公開聲明
  • String[] :返回類型,字符串數組
  • returnArray :方法名稱
  • (String[] array[]) :參數列表...
    • String[] :參數的類型,字符串數組
    • array :參數名稱
    • [] :哎呀! 參數類型實際上是我們之前所說的數組
  • [] :再次糟糕! 返回類型實際上是我們之前所說的數組

腳注:請勿執行此操作,僅在類型中指定類型。 代替String[] array[] ,使用String[][] array


現在,數組事物的語法已經很清楚了,希望您理解為什么它應該是錯誤的,讓我們從一般事物開始:

public <T> List<T> rerurnList(List<T> list) { ... }
  • public :公開聲明
  • <T> :此方法使用通用類型T
  • List<T> :返回類型, T的通用List
  • rerurnList :方法名稱
  • (List<T> list) :參數列表
    • List<T> :參數類型, T通用List
    • list :參數名稱

只是為了回答您的問題:由於參數列表和方法主體之間放置了<T> ,因此您為失敗的方法嘗試使用的語法肯定是錯誤的:

(List<T> list)<T>{

這根本不是有效的Java語法。 這不是標記通用方法的方式。 通過將類型參數- <P> -放在方法訪問修飾符及其返回類型之間,您已經將該方法標記為通用。

暫無
暫無

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

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