zoukankan      html  css  js  c++  java
  • 十三.Java中的泛型和枚举

    1.java泛型:

      这个java中的通配符“上界”“下界”有关。在集合中:
        上界<? extends Number>规定:只能取(get),不能添加(add)。
        下界<? super Number>规定:不能取(get),只能添加(add)。
        无界<?>:不能get也不能add。

      现在试想一下你的例子,List<? extends Number> list = new ArrayList<>()
        Java中是强类型的,就是说任何变量在具体使用时,必须明确类型。上述list在定义时,表述其中的每一项值都是Number本身或者是其子类。但是在add时(list.add( new Long(1) ) 看似没错),但编译器它却不知道这个list到底放的是啥类型,有可能是ArrayList<Short>,ArrayList<Test> 等,因为不确定所以就不允许你add一个long或者short。从这个list定义中,在获取值时,编译器知道的是里面放的是Number类型或者是其子类型值,因此Number n = (Number)list.get(0), Long l = (Long)list.get(0)可以编译通过。

      观察API中Map接口及其方法的声明
      public interface Map<K,V>{
        public V get(Object key);
        public Set<Map.Entry<K,V>> entrySet();
        public Set<K> keySet();
        public void putAll(Map<? extends K,? extends V> m);
        ..
      }

      注:通配符?只能用在泛型变量声明的时候。
      //声明泛型类或泛型接口时不能使用super
      使用&可以给泛型加多个限定
      //如果限定既有接口也有类,那么类必须只有一个,并且放在首位置

    2. java枚举:

    枚举是一种,把对象个数和名字都提前确定下来,且不可再改变的特殊类
    JDK1.5增加了枚举类型,可以使用enum来定义
      public class Gender{
        public static final Gender MALE=new Gender();
        public static final Gender FEMALE=new Gender();
      }
    相当于:
      public enum Gender{
        MALE,FEMALE;
      }

  • 相关阅读:
    一些业内有名的网站收集
    WCF重载
    FCKEditor fckconfig.js配置,添加字体和大小 附:中文字体乱码问题解决
    查询第几条到第几条的数据的SQL语句
    SPOJ 9939 Eliminate the Conflict
    UVA 10534 Wavio Sequence
    HDU 3474 Necklace
    POJ 2823 Sliding Window
    UVA 437 The Tower of Babylon
    UVA 825 Walking on the Safe Side
  • 原文地址:https://www.cnblogs.com/Magic-Li/p/12813451.html
Copyright © 2011-2022 走看看