美文网首页
Effective Java - 列表(lists)优先于数组(

Effective Java - 列表(lists)优先于数组(

作者: DZQANN | 来源:发表于2022-06-14 21:51 被阅读0次

第27条 消除非受检警告

  1. 如果无法消除警告,但可以证明引起警告的代码是类型安全的,可以用@SuppressWarnings("unchecked")注解来禁止这条警告。并加上注释解释为什么是安全的。
  2. SuppressWarnings可以用在任何粒度的级别中,应该尽量在小范围内使用。

思考

  1. 能避免受检警告的情况下应该尽量避免受检警告

  2. 比较经典的而且标准的处理受检警告的例子是Optional.empty()

    public static<T> Optional<T> empty() {
      @SuppressWarnings("unchecked")
      Optional<T> t = (Optional<T>) EMPTY;
      return t;
    }
    

第28条 列表(lists)优先于数组(arrays)

  1. 数组和列表对比:

    • Sub[]Super[]的子类型,List<Type1>List<Type2>没有子类型关系
    • 数组在运行时才知道并检查元素类型约束,泛型在编译时强化类型信息,并在运行时擦除类型信息。
  2. 数组和列表也尽量不要混合使用

  3. 列表相比于数组可能在简洁性,但是有更好的安全性和互用性

  4. 注意可变参数传入List的情况

    public static void main(String[] args) {
      test1(List.of("1"), List.of("2"));
    }
    
    @SafeVarargs
    private static void test1(List<String>... strings) {
      System.out.println(strings.length);
      for (List<String> string : strings) {
        System.out.println(string);
      }
    }
    

思考

  1. 对于jdk官方的方法,如果返回结果是数组,也应当通过封装工具类的方式转化成List,比如StringUtil.stringToList

  2. 开发中碰到的一个典型反面教材就是opencsvCSVReader,里面的readAll方法返回了List<String[]>

    public List<String[]> readAll() throws IOException {
      ...
    }
    

相关文章

网友评论

      本文标题:Effective Java - 列表(lists)优先于数组(

      本文链接:https://www.haomeiwen.com/subject/bdqfvrtx.html