• JAVA 高级特性枚举和泛型


     枚举: 

    语法: 
    public enum 枚举名 { 枚举值表(罗列所有值) }
     例如: 
    public enum EnumTest{MON,TUE,WED.THU,FRI,SAT,SUN}
    枚举操作 ---取值
    1. 使用“枚举.variable“的形式取出枚举中的指定内容
      EnumTest e = EunmTest.MON  // 取出星期1
     2 ,  使用“枚举.values()”的形式,将全部的枚举类型变为对象数组的形式
    for(EnumTest e : EnumTest.values()){
    System.out.println(e);
    }
    Enum特点:
    Enum 中的每一个枚举值都是一个对象。 遍历出来之后是一个对象数组。
    1、 枚举的直接父类是java.lang.Enum, 但是不能显示的继承Enum , 且其子类也不能
    被继承。
    2、 枚举就相当于一个类, 可以定义构造方法、 成员变量、 普通方法和抽象方法 。
    3、 默认私有的构造方法, 即使不写访问权限也是private。
    4、 每个实例分别用于一个全局常量表示, 枚举类型的实例个数有限的、 固定的,
    不能使用new关键字。
    5、 枚举实例必须位于枚举中最开始部分, 每个实例间以逗号进行分割, 枚举实例
    列表的后面要有分号与其他成员相分隔。
     
     

    泛型: 

    泛型是JDK5.0的新特性, 所谓的泛型就是参数化类型, 即在定义类
    时不指定类中属性的具体类型, 而由外部在声明及实例化对象时
    指定具体的类型。 这种类型参数可以用在类、 接口和方法的创建
    中, 分别为泛型类、 泛型接口、 泛型方法。 JAVA语言引入泛型的
    好处是更安全简单。
    泛型类语法结构:
    class class-name <type-param-list>{//....}
    实例化泛型类的语法结构:
    class-name<type-param-list> obj = new class-name<type-param-list>(con-arg-list)
    泛型接口语法结构: 
    interface interface-name <type-param-list>{//....}
    实现泛型接口的语法结构:
    class class-name<type-param-list> implements interface-name<type-param-list>{}
    泛型方法语法结构: 
    public <T> T genericMethodTest(T ts){
    T t = ts;
    return t;
    }
    实现泛型方法结构:
    new GenericMethod().genericMethodTest(11);
     
    泛型类定义; 
    使用泛型类进行类型占位。
    public class GenericClass<T,K> {
    private T t;
    public K k;
    public T getT() {
    return t;
    }p
    ublic void setT(T t) {
    this.t = t;
    }
    }
    泛型接口实例:
    泛型接口结构:
    public interface GenericInterface<T>{
        public T test(T t);
    }
    实现泛型接口结构:
    public class Ginterimp<T>implements Genericinterface<T>{
         @Override
    public T test(T t) {
    // TODO Auto-generated method stub
    return null;
    }
    }
    泛型方法结构: 
    public <T> GenericMethodTest(T ts){
      T t= ts;
      return t;
    }
    实现泛型方法结构: 
    new GenericMethod().genericMethodTest(11);
    类型通配符: 
    类型通配符一般是使用? 代替具体的类型实参,表示可以接受此类型的任意泛型对象。
     
    类型通配符----->上限
    为了能够对类型参数做进一步的限制,比如只能是Number类及其子类,此时就需要用到类型通配符上限来解决, 其格式为: 
    类名称< ? extends 类> 对象名称
    例如:
    //接收GenericClass对象, 范围上限设置为Number, 所以只能接收数字类型
    public static void fun(GenericClass< ? extends Number> temp){
    System.out.println(“数字是: ”+temp);
     }
     
    类型通配符----->下限
    当使用的泛型只能在本类及其父类类型上应用时,就必须使用泛型的范围下限进行配置, 其格式为: 
    类名称< ? super 类> 对象名称
    例如: 
    //只能接收String或Object类型的泛型
    public static void fun(GenericClass<? super String> temp){
    System.out.println(“内容”+temp);
    }
     
    泛型擦除; 
    Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验泛型结果后,会将泛型的相关信息擦除,也就是说,成功编译过后的class文件中是不包含任何泛型信息的。泛型信息不会进入到运行时阶段。
     
  • 相关阅读:
    IT面试技巧(2)
    mySQL学习入门教程——4.内置函数
    weight decay (权值衰减)
    c++读取文件目录
    caffe 卷积层的运算
    一个物体多个标签的问题
    python caffe 在师兄的代码上修改成自己风格的代码
    caffe 细节
    vim让一些不可见的字符显示出来吧
    python 读写文件
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/10827021.html
Copyright © 2020-2023  润新知