跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如果要创建一个泛型数组,该怎么做比较好?
未分類
1 12 月 2020

如果要创建一个泛型数组,该怎么做比较好?

如果要创建一个泛型数组,该怎么做比较好?

資深大佬 : zhao1014 4

直接强转成泛型数组吗?类似于这样的:

private final T[] array; public ClassName(int length){  //这里编译器会有警告  array = (T[])new Object[length]; } 

大佬有話說 (7)

  • 資深大佬 : chocovon

    Effective Java 里讲过应避免使用泛型数组,用 List 代替

  • 資深大佬 : OldCarMan

    – 参照,Arrays 的 copyOf 方法:

    “`javascript
    public static <T> T[] newArray(int length, Class<? extends T[]> type) {
    return ((Object) type == (Object) Object[].class) ? (T[]) new Object[length] : (T[])Array.newInstance(type.getComponentType(), length);
    }
    “`
    – 使用

    “`javascript
    Integer[] integers = newArray(10, Integer[].class);
    “`

  • 資深大佬 : OldCarMan

    (⊙﹏⊙) sorry,回复不支持 md 吗?好像也删不了,你讲究看吧。

  • 資深大佬 : hdfg159

    直接 object 大法

  • 資深大佬 : janus77

    自己写一个数据结构

  • 資深大佬 : SoloCompany

    我忘记在哪里的讨论 java 的 Type[] 就是一个 design flaw, 直接导致了和后来的泛型系统不兼容

    要同时使用泛型和数组那就只能使用 Object[], 对于泛型 T, T[] 实际类型就是 Object[]

  • 資深大佬 : SoloCompany

    另外一个可以参考的例子

    https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#toArray-java.util.function.IntFunction-

    方法签名
    <A> A[] toArray(IntFunction<A[]> generator)

    使用
    SomeType[] typedArray = someStreamtoArray(SomeType[]::new);

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具