• java泛型


    以下代码的问题

    public class GenericTest {
    
        public static void main(String[] args) {
            List list = new ArrayList();
            list.add("qqyumidi");
            list.add("corn");
            list.add(100);
    
            for (int i = 0; i < list.size(); i++) {
                String name = (String) list.get(i); // 1
                System.out.println("name:" + name);
            }
        }
    }

    默认List中存贮Object类型,但是便利的时候,出错,但是却很难发现错误

    泛型相当于数学公式的设x,x就是某个类型

    默认大家使用:

    E – Element (在集合中使用,因为集合中存放的是元素)

    T – Type(Java 类)

    K – Key(键)

    V – Value(值)

    N – Number(数值类型)

    public class generic_paradigm {
        public static void main(String[] args) {
            Box<String> box = new Box<String>();
            box.setData("30");
            //只可以放入字符串
            
        }
       static class Box<T>{
            //T表示Type 某个变量类型
            T data;
            String str;
    
            public T getData() {
                return data;
            }
    
            public String getStr() {
                return str;
            }
    
            public void setData(T data) {
                this.data = data;
            }
    
            public void setStr(String str) {
                this.str = str;
            }
        }
    }

    java源代码中的泛型

    List 接口中的泛型:

    public interface List<E> extends Collection<E> {
    
        int size();
    
        boolean isEmpty();
    
        boolean contains(Object o);
    
        Iterator<E> iterator();
    
        Object[] toArray();
    
        <T> T[] toArray(T[] a);
    
        boolean add(E e);
    
        boolean remove(Object o);
    
        boolean containsAll(Collection<?> c);
    
        boolean addAll(Collection<? extends E> c);
    
        boolean addAll(int index, Collection<? extends E> c);
    
        boolean removeAll(Collection<?> c);
    
        boolean retainAll(Collection<?> c);
    
        void clear();
    
        boolean equals(Object o);
    
        int hashCode();
    
        E get(int index);
    
        E set(int index, E element);
    
        void add(int index, E element);
    
        E remove(int index);
    
        int indexOf(Object o);
    
        int lastIndexOf(Object o);
    
        ListIterator<E> listIterator();
    
        ListIterator<E> listIterator(int index);
    
        List<E> subList(int fromIndex, int toIndex);
    }

    ArrayList实现了List接口

    public class ArrayList<E> extends AbstractList<E> 
            implements List<E>, RandomAccess, Cloneable, java.io.Serializable {
        
        public boolean add(E e) {
            ensureCapacityInternal(size + 1);  // Increments modCount!!
            elementData[size++] = e;
            return true;
        }
        
        public E get(int index) {
            rangeCheck(index);
            checkForComodification();
            return ArrayList.this.elementData(offset + index);
        }
        
        //...省略掉其他具体的定义过程
    
    }
  • 相关阅读:
    视图中访问 路由参数
    视图中的Layout使用(转)
    js判断浏览器类型以及版本
    再关于IE11
    关于IE11
    js获取当前页面的网址域名地址
    contenteditable 属性
    HTMl5的sessionStorage和localStorage(转)
    c 数组做为形參时 该參数退化为指针
    汉诺塔-递归实现
  • 原文地址:https://www.cnblogs.com/da-peng/p/8331285.html
Copyright © 2020-2023  润新知