91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java 用泛型參數類型構造數組詳解及實例

發布時間:2020-09-05 13:17:49 來源:腳本之家 閱讀:118 作者:lqh 欄目:編程語言

java 用泛型參數類型構造數組詳解及實例

前言:

前一陣子打代碼的時候突然想到一個問題。平時我們的數組都是作為一個參數傳入方法中的,如果我們要想在方法中創建一個數組怎么樣呢?在類型明確的情況下,這是沒什么難度的。如果我們傳入的參數是泛型類型的參數呢?

public static <T> T[] creArray (T obj){
    T[] arr = new T[10];
}

像上面這種用T來直接new數組的方法是錯誤的,會編譯時出現一個:Cannot create a generic array of T. 的錯誤。Java中不支持未知的類型直接創建數組。

最后我得到了這樣一個完美的解決方法:

package Test;

import java.lang.reflect.Array;

/**
 * 
 * @author QuinnNorris
 * 在泛型方法中創建泛型類型的數組
 */
public class Test {
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    String a = "ccc";//創建一個String,作為泛型類型
    String[] ar = creArray(a);
    for(String art :ar)//循環打印
      System.out.println(art);
  }

  //泛型靜態方法
  public static <T> T[] creArray (T obj){
    T[] arr = (T[])Array.newInstance(obj.getClass(), 5);
    arr[1] = obj;
    System.out.println(arr[1]);
    return arr;
  }
}

代碼輸出如下:

ccc //方法中輸出的arr[1] 
null //以下5個是main中循環迭代出的數組值 
ccc 
null 
null 
null

上述的方法是完全可行的,我們通過用Array類的newInstance方法來構造了可指定類型的數組。使用反射來完成這個工作也應該是在情理之中。因為泛型類型T在中運行時才可能被確定下來,我們能創建泛型數組也必然是在java運行時想辦法,在java運行時能起作用的技術莫過于反射。

另外看見null,正好在這里也整理一下java中不同類型數組初始化的值情況:

基本類型(數值型):0
基本類型(布爾型):false
基本類型(char型):(char)0
對象類型: null

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仁寿县| 锡林浩特市| 曲松县| 浮梁县| 千阳县| 祁连县| 芒康县| 云霄县| 黎城县| 子洲县| 铁力市| 体育| 怀远县| 陇川县| 舟山市| 南溪县| 格尔木市| 集安市| 潮安县| 江孜县| 文山县| 永登县| 荥阳市| 安义县| 义乌市| 常德市| 菏泽市| 阳山县| 汤阴县| 海林市| 阿尔山市| 哈巴河县| 康保县| 华亭县| 鹤壁市| 抚松县| 泸西县| 启东市| 乌什县| 大丰市| 潼南县|