美文网首页
Effective Java - 优先考虑泛型

Effective Java - 优先考虑泛型

作者: DZQANN | 来源:发表于2022-06-16 22:06 被阅读0次
    1. 使用泛型的时候,如果内部是通过封装数组实现的,就会遇到不能实例化泛型数组的问题,不能new Object[DEFAULT_INITIAL_CAPACITY]

    2. 解决不能实例化泛型数组有两个方法,在创建时候强转和在使用时候强转

      • public class Stack<E> {
          private E[] elements;
          private int size = 0;
          private static final int DEFAULT_INITIAL_CAPACITY = 16;
        
          @SuppressWarnings("unchecked")
          public Stack() {
            elements = (E[]) new Object[DEFAULT_INITIAL_CAPACITY];
          }
        
      • public class Stack<E> {
          private Object[] elements;
          private int size = 0;
          private static final int DEFAULT_INITIAL_CAPACITY = 16;
        
          public Stack() {
            elements = new Object[DEFAULT_INITIAL_CAPACITY];
          }
        
          public E pop() {
            if (size == 0)
              throw new EmptyStackException();
        
            // push requires elements to be of type E, so cast is correct
            @SuppressWarnings("unchecked") E result =
              (E) elements[--size];
        
            elements[size] = null; // Eliminate obsolete reference
            return result;
          }
        
      1. 方法一的优势是可读性想并且更加简洁,在开发中可以尽量使用第一种写法。第一种写法的缺点是堆污染(heap pollution),后面章节会讲到

    思考

    这节的题目虽然叫优先使用泛型,主要讲的其实是使用泛型的注意点。总体上感觉其实实际开发中并不太会碰到。首先泛型数组,至少我自身不会用到,如果真的碰到了就使用List。对于可变参数是一个List的数组,印象中之前出现过,只要保证不改变类型的情况下,简单的遍历是不会出错的

    相关文章

      网友评论

          本文标题:Effective Java - 优先考虑泛型

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