• Java中的泛型、枚举和注解


    1.泛型:

    一、为什么要有泛型(Generic)?
    1.解决元素存储的安全性问题
    任何类型都可以添加到集合中:类型不安全
    2.解决获取数据元素时,需要类型强转的问题
    读取出来的对象需要强转:繁琐可能有ClassCastException

    1.泛型的声明
    interface List<T> 和 class TestGen<K,V>
    其中,T,K,V不代表值,而是表示类型。这里使
    用任意字母都可以。常用T表示,是Type的缩写。

    2.泛型的实例化:
    一定要在类名后面指定类型参数的值(类型)。如:
    List<String> strList = new ArrayList<String>();
    Iterator<Customer> iterator = customers.iterator();

    对象实例化时不指定泛型,默认为:Object

    二、自定义泛型类

    class Person<T>{
        //使用T类型定义变量
        private T info;
        //使用T类型定义一般方法
        public T getInfo(){
            return info;
        }
        public void setInfo(T info){
            this.info = info;
        }
        //使用T类型定义构造器
        public Person(){}
        public Person(T info){
            this.info = info;
        }
        //static的方法中不能声明泛型
        //public static void show(T t){
        //}
        //不能在try-catch中使用泛型定义
        //try{}
        //catch(T t){}        
    }

    三、通配符:

    1.使用类型通配符:?
    比如:List<?> ,Map<?,?>
    List<?>是List<String>、List<Object>等各种泛型List的父类。

    2.不能直接向List<?>,Map<?,?>写入list中的元素。因为我们不知道元素类型,我们不能向其中添加对象。
    唯一的例外是null,它是所有类型的成员

    2.枚举:

    JDK1.5之前需要自定义枚举类
    JDK 1.5 新增的 enum 关键字用于定义枚举类
    若枚举只有一个成员, 则可以作为一种单例模式的实现方式

    枚举类对象的属性不应允许被改动, 所以应该使用 private final 修饰
    枚举类的使用 private final 修饰的属性应该在构造器中为其赋值
    若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数

    必须在枚举类的第一行声明枚举类对象

    枚举类和普通类的区别:
    使用 enum 定义的枚举类默认继承了 java.lang.Enum 类
    枚举类的构造器只能使用 private 访问控制符
    枚举类的所有实例必须在枚举类中显式列出(, 分隔 ; 结尾). 列出的实例系统会自动添加 public static final 修饰

    枚举类的主要方法:
    values()方法:返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值。
    valueOf(String str):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的“名字”(如上图中的“SPRING”)。如不是,会有运行时异常。

    3.注解:

    定义新的 Annotation 类型使用 @interface 关键字
    Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明. 其方法名和返回值定义了该成员的名字和类型.
    可以在定义 Annotation 的成员变量时为其指定初始值, 指定成员变量的初始值可使用 default 关键字
    public @interface MyAnnotation{
      String name() default “lhf";
    }

  • 相关阅读:
    20145318 《信息安全系统设计基础》第11周学习总结
    20145318 《信息安全系统设计基础》第10周学习总结
    20145318 《信息安全系统设计基础》第9周学习总结
    20145318 《信息安全系统设计基础》期中总结
    20145317《信息安全系统设计基础》课程总结
    20145317《信息安全系统设计基础》第十四周学习总结
    20145317《信息安全系统设计基础》第十三周学习总结
    20145317《信息安全系统设计基础》第十二周学习总结1
    实验三:实时系统的移植
    实验五:通讯协议设计
  • 原文地址:https://www.cnblogs.com/pjlhf/p/8658639.html
Copyright © 2020-2023  润新知