zoukankan      html  css  js  c++  java
  • 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);
        }
        
        //...省略掉其他具体的定义过程
    
    }
  • 相关阅读:
    codeblocks c++11 pthread
    腾讯笔试题目
    Unity3D协程介绍 以及 使用
    Unity手游之路<六>游戏摇杆之Easy Touch 3教程
    Unity3d 换装 之 模型动画分离
    Starling 2D框架简介(一)
    [译林军] 译~CrossBridge 简介
    Flash, Flex, Air, Flashplayer之间的相互关系是什么?
    网络和通信基础知识
    页游安全攻与防,SWF加密和隐藏密匙
  • 原文地址:https://www.cnblogs.com/da-peng/p/8331285.html
Copyright © 2011-2022 走看看