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

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Java 泛型的这几种写法有啥区别?
未分類
10 9 月 2020

Java 泛型的这几种写法有啥区别?

Java 泛型的这几种写法有啥区别?

資深大佬 : zhanglintc 3

下面这些写法编译都没问题, 有啥具体的区别吗?

List<Integer> res1 = new ArrayList<Integer>(); List<Integer> res2 = new ArrayList<>(); List<Integer> res3 = new ArrayList();  List res4 = new ArrayList<Integer>(); List res5 = new ArrayList<>(); List res6 = new ArrayList(); 

目前知道的, res2 应该是 1.7 以后, res1 写法的简略, 所以二者应该是一样的.

那 res3 和 res2 有区别么?

res4 ~ res6 看起来没有任何泛型的效果, 特别是 res4 依然是可以添加 String 类型的元素的:

res4.add("abc"); 

大佬有話說 (9)

  • 主 資深大佬 : zhanglintc

    半天了, 连个打酱油的人都没有么… 这问题是太麻烦了, 还是太无聊了? …

  • 資深大佬 : EXChen

    @zhanglintc 是的,4-6 这种写法是有风险的,因为你可以往 list 里面存一些不是你预期的类型。

  • 資深大佬 : lxk11153

    我选择 res2

  • 資深大佬 : xgfan

    太无聊了。

  • 資深大佬 : xgfan

    3,没有什么影响,最好不要这样做。

  • 資深大佬 : lxk11153

    var res1 = new ArrayList<Integer>(); 怎么样 [doge]

  • 資深大佬 : jasonding

    始终使用第一种写法

  • 資深大佬 : vate32

    List res4 这种定义变量和 new ArrayList()这种新建对象方式,没有尖括号是历史原因,没有指定泛型类型,现在已经非常不推荐这么写了,如果使用的话 idea 都会警告。在 java8 的环境下推荐使用 List<Integer> res2 = new ArrayList<>()这种方式,new ArrayList<>()这个尖括号内的类型是省略了,因为等号左边已经有了,会进行类型推断。

  • 主 資深大佬 : zhanglintc

    @vate32 #8 嗯, 目前看来 List<Integer> res2 = new ArrayList<>(); 是最简单而且没有问题的写法.
    其实 res3 我感觉除了有个警告外, 好像也没问题. 当然了, 我不会这么写的.

文章導覽

上一篇文章
下一篇文章

AD

其他操作

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

51la

4563博客

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